早教吧作业答案频道 -->其他-->
C++约瑟夫问题:求源代码及说明约瑟夫问题:M个人围成一圈,从第一个人开始报数,数到N的人出圈;再由下一个人开始报数,数到N的人出圈;……。输出依次出圈的人的编号。M的值预
题目详情
C++ 约瑟夫问题: 求源代码 及 说明
约瑟夫问题:
M个人围成一圈,从第一个人开始报数,数到N的人出圈;再由下一个人开始报数,数到N的人出圈;……。输出依次出圈的人的编号。M的值预先选定,N 由键盘输入。
这道题的主要算法步骤如下:
(1)由于对于每个人只有出圈或不出圈两种状态。因此设置标志数组存放游戏过程中每个人的状态。不妨用1表示出圈,0表示不出圈。
(2)给标志数组赋初值为0。
(3)模拟报数游戏的全过程。t从1变化到m控制报数游戏的每节循环,用s累计每节报数的数值,用f统计出圈的总人数;因此游戏结束的条件就是f=m。
请同学们实现程序的编码。
样例:
输入:m=8 n=5
输出:5 2 8 7 1 4 6 3
求源代码 及 说明
不考虑数组的长度!!!
约瑟夫问题:
M个人围成一圈,从第一个人开始报数,数到N的人出圈;再由下一个人开始报数,数到N的人出圈;……。输出依次出圈的人的编号。M的值预先选定,N 由键盘输入。
这道题的主要算法步骤如下:
(1)由于对于每个人只有出圈或不出圈两种状态。因此设置标志数组存放游戏过程中每个人的状态。不妨用1表示出圈,0表示不出圈。
(2)给标志数组赋初值为0。
(3)模拟报数游戏的全过程。t从1变化到m控制报数游戏的每节循环,用s累计每节报数的数值,用f统计出圈的总人数;因此游戏结束的条件就是f=m。
请同学们实现程序的编码。
样例:
输入:m=8 n=5
输出:5 2 8 7 1 4 6 3
求源代码 及 说明
不考虑数组的长度!!!
▼优质解答
答案和解析
#include"stdio.h"
int main(void){
int a[100] = {0};
int b[100] = {0};
int m = 0,n = 0;
int i = 0,//a的循环
j = 1,//报的数
l = 0;//b的循环
scanf("%d %d",&m,&n);
while(1){
if(j == n){//报到5后,将编号写入B数组,报数初始化,A数组该成员置1
j = 0;
a[i] = 1;
b[l++] = i+1;
}
if(l == m){//b数组填充了m个数,跳出循环
break;
}
j++;
do{//跳过置1的a数组成员
i++;
if(i == m)
i = 0;
}while(a[i] == 1);
}
for(i = 0;i < m;i ++)
printf("%d ",b[i]);
printf("\n");
return 0;
}
看了 C++约瑟夫问题:求源代码及...的网友还看了以下:
英国历史学家李约瑟的中国难题的内容是什么啊?是李约瑟关于中国近代遭受西方列强侵略的疑问 2020-05-13 …
按要求填空.按要求填空.“瑟”字用部首查字法查字典,先查部,再查画,“瑟”在字典中的解释有:①古代 2020-05-14 …
按要求填空.按要求填空.“瑟”字用部首查字法查字典,先查部,再查画,“瑟”在字典中的解释有:①古代 2020-05-14 …
按要求填空。“瑟”字用部首查字法查字典,先查部,再查画,“瑟”在字典中的解释有:①古代弦乐器;②象 2020-05-14 …
秋风瑟瑟的瑟是什么意思1.古代弦拨乐器2.象声词3.发抖序号告诉我就可以了是2吗 2020-05-16 …
对这首诗的解说,不恰当的一项是[]A.首联取锦瑟为喻:一晃我已年过半百,回忆已逝的青春年华,不禁百 2020-05-17 …
求问“琴瑟和鸣”中的“瑟”是什么意思? 2020-06-19 …
昔我来思,雨雪霏霏;今我往矣,杨柳依依.昔我来思,桃李累累;今我往矣,杨柳依依.想请问下,这两句话 2020-06-23 …
对《锦瑟》这首诗的解说,不恰当的一项是A.首联写锦瑟:一晃我已年过半百,回忆已逝的青春年华,不禁百 2020-07-06 …
鲁迅祝福阅读冬季日短,又是雪天,夜色早已笼罩了全市镇……我静听着窗外的瑟瑟作响的雪花声.一面想反而 2020-07-06 …