日期:2014-05-20  浏览次数:20748 次

一个报数的小程序,有几行代码需完善,在线等
下面的代码中,完成一个报名的功能
 有n个人围成一圈,顺序排号,从第一人开始报名,从1到3报数,报到3的人退出圈,再从他的下一人重新报数,
 问最后留下的是原来第几号的那位?
其中:小括号中有数字的就是需填写的代码,大家帮我看下,thanks

public class Test {

public static void main(String[] args) {
int peo;
Scanner inp = new Scanner(System.in);
peo = inp.nextInt();
int k = Keeper(peo, 3);
System.out.println("留下的是" + k);

}
public static int Keeper(int peo,int n){
int k=0;
int[] array=new int[peo];
for(int i=1;i<peo;i++){
int j=1;
while(j<=n){
if((1)){
j--;
}
if(j==n){
(2)
}
j++;
(3)
}
}
for(k=0;k<peo;k++){
if(array[k]==0){
(4)
}
}
return k+1;
}

}

------解决方案--------------------
约瑟夫问题。。。。。
------解决方案--------------------
List<Integer> list = new ArrayList<Integer>();
for (int i = 6; i > 0; i--) {
list.add(i);
}
/* int p = 1;
while (p<=3) {
int count = 0;
for (int i = 0; i<list.size(); i++) {
if(p == 3&& list.get(i) != -1) { 
list.set(i, -1);
p = 1;
}
if (list.get(i) != -1) {
p++;
count ++;
}
}
for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i) + " ");
}
System.out.println();
if(count <= 1) {
for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i) + " ");
}
System.out.println();
break;
}
}*/
------解决方案--------------------
public class Test{

public static void main(String[] args) {