题目的意思应该是100个人,数到第14个人的时候,14走,然后再从第1个人数,那这样的话题目就没意思了,因为以后每次走掉的都是14以后的人,100个人和14个人是一样的,也就是说最后一个人肯定在前14个人中,可以简单退一下最后一个人是第2个人;
还有一种情况,就是100个人,数到第14个人的时候,14走,然后从15开始朝后数14个,再走掉,即第二次走掉的人是28,这样有点难度,我用最笨的方法求解,结果是第49人,所以很显然你给的程序是错误的。第二种方式我的程序如下:
public static void main(String[] args) throws Exception {
Integer[] ins = new Integer[100]
for (int i = 0i <ins.lengthi++) {
ins[i] = i+1
}
int yb = 0
int delNum = 0
int j = 0
while(delNum<ins.length - 1){
if(delNum == 91){
System.out.println("delnum is up")
}
System.out.println("yb:"+yb+" delNum:"+delNum+" j:"+j)
for (int i = ybi <ins.lengthi++) {
yb++
if(null != ins[i]){
j++
}
if(j == 14){
ins[i] = null
delNum++
System.out.println("del "+i)
j = 0
break
}
}
if(ins.length - yb <14 &&j <14){
yb = 0
for (int i = ybi <ins.lengthi++) {
yb++
if(null != ins[i]){
j++
}
if(j == 14){
ins[i] = null
System.out.println("del "+i)
delNum++
j = 0
break
}
}
}
}
List<Integer>result = new ArrayList<Integer>()
for (int i = 0i <ins.lengthi++) {
System.out.println("ins["+i+"]---"+ins[i])
if(ins[i] != null){
result.add(ins[i])
}
}
for (Integer cur : result) {
System.out.println("最后一个是: "+cur)
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)