帮忙解答一个算法的问题

beckoner0000 2007-12-24 07:39:25
有n个人围成一圈。顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子。问最后留下的是原来第几号的那位。
...全文
39 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
chensir1985 2008-02-05
  • 打赏
  • 举报
回复
import java.util.Scanner;


public class PrintNumber {

int m;//代表报数报到m时,此数出列
int n;//代表总共有n个人

public PrintNumber(){//构造方法,初始化m,n
Scanner in=new Scanner(System.in);//从控制台接收参数
System.out.print("请输入n个人:");
n=in.nextInt();
System.out.println("请输入m值:");
m=in.nextInt();
System.out.println();
}

public void printNumber(){//报数函数
int[] person=new int[n];
for(int i=0;i<n;i++)
person[i]=1;
//初始化person数组,数组值都为1。 当值为1时,代表有人占在,为0时代表无人占在
int k=0;//数组下标
int count=0;//代表报数的顺序
for(int i=0;i<n;i++){//报数的人数,代表循环的次数
for(int j=0;j<m;){//报3的循环
if(person[k%n]!=0)
j++;
k++;
}
count++;
person[(k-1)%n]=0;//报3了后k++了,所以指针减1
System.out.println("第"+count+"报"+m+"的数为:"+((k-1)%n+1));
}

}

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
PrintNumber p=new PrintNumber();
p.printNumber();
}

}

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧