报数游戏n个人排一圈报数报到特定数字的人出列求出列顺序
长裙英文-林冲风雪山神庙
package test5_4;
import
import r;
**
*
〈一句话功能简述〉
* 〈功能详细描述〉
*
*
@author db2admin
* @see [相关类方法](可选)
*
@since [产品模块版本] (可选)设有n个人依围成一圈,从第1个人开始报数,
*
数到第m个人出列,然后从出列的下一个人开始报数,数到第m个人又出列,…,
*
如此反复到所有的人全部出列为止。设n个人的编号分别为1,2,…,n,打印出出列
的顺序
*
public class NumGame {
public static void main(String[] args)
{
int n =new Scanner().nextInt();
int m=new Scanner().nextInt();
queue(n, m);
}
**
* 最后出队的人
*
* @param total 总的人数
*
@param num 第几号出队
*
public static void queue(int total, int num) {
定义一个数组,true表示没有出队列的,false表示已经出队列的
boolean[] arr = new
boolean[total];
(arr, true);
int next = 1;
移动变量
int index =
0; 数组下标
int
count = total; 剩下的人数
如果剩下的人数为1人时,停止报数
while (count > 1)
{
if (arr[index] == true) {
if (next == num) {
arr[index] = false;
剩下的人数减1
--count;
移动变量复位,从1开始报数
next =
1;
n(依次出列的人为:
} else {
++next;
}
}
index
= (index + 1) % total;报到结束从头开始
}
for (int i = 0; i < total; i++) {
if (arr[i] == true) {
n(最后出列的人为:
}
}
}
}
-----------------
--------------------------------------------------
-------------------------------
package
test5_4;
import
**
*
@author db2admin
*
*
public class
Test1 {
**
* @param args
*
public static void main(String[] args) {
for each 有几个就循环几次
int[]
arr ={ 1, 3, 5, 7 };
for (int i : arr) {
n(i);
if (i == 3) {
break;
}
}
n(15.25%(-0.5));
n((-15.25)%0.5);
n((-15.25)%(-0.5));
n((-11.5));
n(15.2%0.5);false
}
public static void numgame(int
total,int m)
{
int
next=1;报数
int count=total;人数
int
index=0;下标
boolean a[]=new
boolean[total];
(a, true);
while(count>1)
{
if(a[index]==true)
{
if (next==m) {
a[index]=false;
next=1;
--count;
n(依次出列的是
}
}else {
++index;
}index=(index+1)%total;
}
for(int i=0;i
if(a[i]==true)
{
n(最后出来的是
}
}
}
}