有30个人围坐一圈,从1到30编号,从1号开始报数,报5者退出。依退出顺序输出他们的编号。

来源:百度知道 编辑:UC知道 时间:2024/05/06 19:54:27
这个什么约瑟夫的问题,最好是不要用函数调用啥的,简单就行。

C++的:

#include <iostream>
#include <queue>

using namespace std;

int main()
{
int monkeys(0),max(0);
int count,ID;
queue<int> circle;
while (monkeys<=0||max<=0)
{
cout<<"How many monkeys:";
cin>>monkeys;
cout<<"The ones count which number can leave:";
cin>>max;
}
for (ID=1;ID<=monkeys;++ID)
circle.push(ID);

count=0;
while (circle.size()>1)
{
++count;
ID=circle.front();
circle.pop();
if (count==max) {
cout<<ID<<endl;
count=0;
}
else circle.push(ID);
}

ID=circle.front();
cout<<"The monkey marked with number "<<ID<<" will be left behind.\n";
return ID;
}

这是结果:
How many monkeys:30
The ones count which numbe

17个人围坐一圈,顺序编号为1,2,3,…,17。 6人围坐成一圈, 2:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子, 25个男生,25个女生,围坐一圈,证明至少有一个人两边都是女生 设有n个人坐一圈并按顺时针方向从1到n编号, 请问从江苏无锡.到深圳沙井沙三村上下围坐火车怎么坐..似乎 没有直达深圳的车吧 有n个人围成一圈,顺序排号。 2062人围成一圈从某人开始逆时针报数,从1到64循环往复直到每人报过10次,有没有报过5又报过11的多少理由 出圈问题:出圈,n个围成一圈,数到第m个人出圈,再从m个人的下一个人数,依次循环 13个人围成一圈,从第一个人开始顺序报号1、2、3。凡报到3者退出圈子。找出最后留在圈子的人原来的号码