17个人围坐一圈,顺序编号为1,2,3,…,17。

来源:百度知道 编辑:UC知道 时间:2024/05/15 21:40:09
现在从第一个人开始数起,每数到7时,这个人就从圈里出来,再从下一个数重新开始数1,2,…,7,数到第7的这个人也从圈里出来,直到全部17个人从圈里出来为此。例如,前面站出来的4个人是7,14,4和12。编程输出从圈里出来的人的顺序

你好
我考过三级网络 这个问题我知道 很多C语言三级考试都有这个

main()
{int t,n=17,s=1,m=7,I,j,k,s1,w,p[17];
s1=s;
for(I=1;I<=n;I++) p[I-1]=I;
for(I=n;I>=2;I--)
{s1=(s1+m-1)%I;
if (s1==0) s1=I;
w=p[s1-1];
for(j=s1;j<=I-1;j++) p[j-1]=p[j];
p[I-1]=w;}
for(t=0;t<17;t++)
printf("%d ",p[t]);
getch();
}

里面有三个未知量n,s,m
其中n=17 就是17个人
s=1 从第一个人报数
m=7 每次数7个数
明白了把 现编的 有错误的话请指出 希望对你有用 我运行无错!

Josephus问题,如果你有关于循环链表程序举例的书,一般都会提到,
在百度知道搜一下这个吧,你会找到答案的:
http://zhidao.baidu.com/q?ct=17&pn=0&tn=ikaslist&rn=10&word=Josephus&fr=wwwt

http://zhidao.baidu.com/q?ct=17&pn=0&tn=ikaslist&rn=10&word=Josephus&fr=wwwt

17个人围坐一圈,顺序编号为1,2,3,…,17。 6人围坐成一圈, 设有n个人坐一圈并按顺时针方向从1到n编号, 用VB编程17人围成一圈,编号为1-17从1号开始报数,报到3的倍数的人离开一直数下去,直到剩下1人,求此人编号. 有n个人围成一圈,顺序排号。 DataGraid绑定时,想显示一列编号按照顺序为1,2,3,4,5...., 有M个人围成一圈,每人一个的编号(1. 2:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子, 1999盏灯亮着各有一开关控制其顺序编号;1,2,1999分别先后将编号为2,3,5,的倍数开关拉一下拉完后求亮的灯数 25个男生,25个女生,围坐一圈,证明至少有一个人两边都是女生