首页 > 其他分享> > 2、已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列; * 他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直
2、已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列; * 他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直
作者:互联网
题目:
/*
- 2、已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。从编为k的人开始报数,数到m的那个人出列; 他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。
输入:n= 9,k= 1, m=5
输出:5,1,7,4,3,6,9,2,8
*/
public class Two127 {
public static void main(String[] args) {
System.out.println("人数n:起点k:间隔m:(空格隔开三个数据)");
Scanner scanner = new Scanner(System.in);
String s = scanner.nextLine();
scanner.close();
String nkm[] = s.split(" ");
int n = Integer.parseInt(nkm[0]); //人数n
int k = Integer.parseInt(nkm[1]); //起点k
int m = Integer.parseInt(nkm[2]); //间隔m
int [] people=new int[n]; //用来装人编码的数组
for (int i = 0; i < people.length; i++) { //初始化这个数组
people [i]=i+1;
}
int a=k+m-2; //第一个开始出列的人
System.out.print("结果为:");
while (n>0) {
String mString=",";
if (n==1) {
mString=" ";
}
System.out.print(people[a]+mString);
for (int i = a; i < n-1; i++) {
people [i]=people[i+1]; //将这个人之后的前移一位;
}
n=n-1; //人数减一个
if(n!=0) {
a=(a+m-1)%n; //用取余来实现第m个之后的人
}
}
}
}
运行结果:
标签:数到,String,people,int,System,nkm,出列,报数 来源: https://blog.csdn.net/y_bra_ke/article/details/113621046