结果1 题目有n个人按顺序从1到n编号围成一圈。从第一个人开始报数,报到3的人退出圈外,下一个人又从1开始报数,报到3的人退出圈外。如此反复下去,直到圈内留下一个人。请按退出顺序输出退出圈子的人的编号。相关知识点: 试题来源: 解析 #include#define N 7void f(int**a){int suminum=0;sum=N;i=0...
有n个人围成一圈,按顺序从1到n编号.从第一个人开始报数,报数3的人退出圈子,下一个人从1开始重新报数,用指针怎么写,核心的算法有点想不明白
int a[N]={1};int i=0,t=N,j=0;while(t==1) //如果还剩下一个人,跳出循环{if(i==N) //这里是头尾衔接成一个圈i=0; if(a[i]!=0) //这里是计数报数j++;if(j==2) //这里是出圈子的人{a[i]=0;j=0;t--;}i++;}for(i=0;i 解析看不懂?免费查看同类题视频解析查看解答 ...
有n个人围成一圈,按顺序从1到n编号.从第一个人开始报数,报数3的人退出圈子,下一个人从1开始重新报数,用指针怎么写,核心的算法有点想不明白
设有n个人(编号0~(n-1)),从0开始报数,报到(m-1)的退出,剩下的人继续从0开始报数 (用数学方法解的时候需要注意应当从0开始编号,因为取余会取到0解。)实质是一个递推,n个人中最终留下来的序号与n-1个人中留下来的人的序号有一个递推关系式。假设除去第k个人,则 0, 1, 2, 3,...
结果1 题目有n个人按顺序从1到n编号围成一圈。从第一个人开始报数,报到3的人退出圈外,下一个人又从1开始报数,报到3的人退出圈外。如此反复下去,直到圈内留下一个人。请按退出顺序输出退出圈子的人的编号。 相关知识点: 试题来源: 解析 #include#define N 7void f(int**a){int suminum=0;sum=N;i=...