用java编写程序,新手小题2(急)设有n个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进行1到m的报数,报数到第m个人,此人出圈,再从他的下一个人重新开始1到m的报数,如此进行下去直到所有的人都出圈为止。现要求按出圈次序,每10人一组,给出这n个人的顺序表。
2019-04-13
用java编写程序,新手小题2(急)
设有n个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进行1到m的报数,报数到第m个人,此人出圈,再从他的下一个人重新开始1到m的报数,如此进行下去直到所有的人都出圈为止。现要求按出圈次序,每10人一组,给出这n个人的顺序表。
优质解答
void function(int n,int s, int m)
{
申请个数组啊a[n]每个值都等于1; //一表示没出圈 零表示已经出圈
int id = (s-1+m-1)%n; //第一个出圈人的位置 (id从零开始)
a[id] =0;
输出id;
for(int i =n-1; i>0; i--)
{
for(int x=m; x>0; x--)
{
if(a[id]==0) //已经出圈的不算
{
x++;
}
id=(id++)%n;
}
a[id]=0;
输出id;
}
}
没用过JAVA 也没验证~~你可是试试这个行不行..
void function(int n,int s, int m)
{
申请个数组啊a[n]每个值都等于1; //一表示没出圈 零表示已经出圈
int id = (s-1+m-1)%n; //第一个出圈人的位置 (id从零开始)
a[id] =0;
输出id;
for(int i =n-1; i>0; i--)
{
for(int x=m; x>0; x--)
{
if(a[id]==0) //已经出圈的不算
{
x++;
}
id=(id++)%n;
}
a[id]=0;
输出id;
}
}
没用过JAVA 也没验证~~你可是试试这个行不行..