设编号从1,2,...,n的n个人围坐一圈,约定编号为k(1<=k<=n)的人从1开始报数,数到m的那个人出列,他的下

2025-02-27 07:22:40
推荐回答(2个)
回答1:

public class ListTest
{
public void outList(int[] a, int m, int n)
{
int flag1 = 0; //计数用 判断加到m时 处理出队
int flag2 = 0; // 计数 当为n 时 程序退出
for(int i = 0; i < n; i++)
{
if(a[i] != -1)
flag1++;
if(flag1 == m)
{
flag1 = 0;
flag2++;
System.out.println(a[i]); // 第几个人出队
a[i] = -1;
}
if(i == (n - 1))
i = -1;
if(flag2 == n)
{
return;
}
}
}
public static void main(String[] args)
{
int n = 10;
int m = 7;
int[] a = new int[50];
for(int i = 0; i < n; i++)
{
a[i] = i + 1;
}
ListTest listTest = new ListTest();
listTest.outList(a, m, n);
}
}

程序已经测试过 这是个数组的 但大概算法就是这样

回答2:

jbm 'plm';,'ML L;