永发信息网

C++问题 12个人围坐成一圈(编号顺时针方向依次为1~12),从1号开始数,沿顺时针方向

答案:2  悬赏:40  手机版
解决时间 2021-03-01 12:03
当数到k(k>1)时,则该人被淘汰,接着从被淘汰的人下一位继续从1开始数起,数到k时淘汰第二人,依此类推,知道剩下最后一人。输出最后一人的编号,以及每一轮的结果。k的取值范围为int可表示的正整数,无需判断输入是否合法。
输出时,使用setw(3)将每个数字的输出宽度限制为3,以便查看。
最佳答案
楼主你好

代码如下:
#include
#define max 1000
int main()
{
int n;//人数
int num[max];//标记状态
int move=0;//标记移除的人数
int m;
int i=0;
int j=0;
printf("请输入n m:");
scanf("%d%d",&n,&m);
for(i=0;i num[i]=1;
i=0;
printf("依次淘汰的人:\n");
while(move {
i%=n;
while(i {
j%=m;
if(num[i]==1)
j++;
if(j==m)
{
num[i]=0;
printf("%d\n",i+1);
move++;
}
i++;
}
}
for(i=0;i if(num[i])
{
printf("win:%d\n",i+1);
break;
}
return 0;
}

希望能帮助你哈
全部回答
#include<iostream> #include<iomanip> using namespace std; int main() {     int s[13];     int i,j,k;     for (i=1;i<=12;i++)     {         s[i]=i; }     cin >> k;     int n=12;     int start=1;     while (n > 1)     {      j=k+start-1;         while (j >= n) j=j % n;         if (j == 0) j=n;         start=j;         for (i=start+1;i<=12;i++)             s[i-1]=s[i];         n--;     }     cout << setw(3) << s[1] << endl;     return 0; }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
藏刀和断恨,哪个厉害
跑步一个月的步每次3公里正常能燃烧掉多少脂
易语言 屏幕绘图的问题!
百信房产中介文源店在什么地方啊,我要过去处
自得其乐什么意思
CS75的发动机动力怎么样?
湖北宏博盛世建设有限公司在哪里啊,我有事要
装不上系统,用光盘启动,windowspe也进入不
【朱自清的散文代表作】朱自清的散文代表作有
中国邮政都川邮政所地址有知道的么?有点事想
华为手机打字总是连续两次
雪佛来克鲁斯自动挡1.8C耗油量是多少,请知道
桑塔纳前挡玻璃下方编码是什么意思
下毛胡洞地址有知道的么?有点事想过去
滴滴打车,顺风车,快车,出租车,代驾。各是
推荐资讯
徽记水体广场怎么去啊,有知道地址的么
联想300s 14isk进入睡眠状态后就在没法退出了
请有一定经验的英语高手回答下列问题
到考场怎么坐公交车,最快需要多久
#临沂达内时代软件有限公司#正规吗
上小坑地址在什么地方,想过去办事
虎仔超市这个地址在什么地方,我要处理点事
be nice to sth 造句 初一的 简单点 带翻译
笔记本更改了regedit的值,重启之后蓝屏了
我和老婆结婚了,婚后我家出钱买了一套房子,
无线室外控制器是什么
长期应用高剂量雄激素需监测A.血压B.血糖C.肾
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?