下面的代码中,完成一个报名的功能
 有n个人围成一圈,顺序排号,从第一人开始报名,从1到3报数,报到3的人退出圈,再从他的下一人重新报数,
 问最后留下的是原来第几号的那位?
其中:小括号中有数字的就是需填写的代码,大家帮我看下,thankspublic 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;
}}

解决方案 »

  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;
    }
    }*/
      

  2.   

    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 (array[k]!=0) {
    j--;
    }
    if (j == n) {
    array[k] = 1 ;   //出圈
    }
    j++;
    k=++k>=peo?0:k ;
    }
    }
    for (k = 0; k < peo; k++) {
    if (array[k] == 0) {
    break;
    }
    }
    return k + 1;
    }
    }
    //我是这样写的,不知道还有没有其他更好的