例题5.2约瑟夫问题No.2
//用queue来做,还可以用结构体做
//每次循环都使报数为1的小孩永远位于队列头
#include <iostream>
#include <queue>
using namespace std;
int main()
{
queue<int> ysf;
int n,p,m;
cin>>n>>p>>m;
for(int i=1;i<=n;i++)
{
ysf.push(i);
}
for(int i=1;i<p;i++)
{
ysf.pop();
ysf.push(i);
}
while(!ysf.empty())
{
for(int i=1;i<m;i++)
{
int x=ysf.front();
ysf.pop();
ysf.push(x);
}
int y=ysf.front();
if(ysf.size()!=1)
{
cout<<y<<",";
}
else
cout<<y;
ysf.pop();
}
return 0;
}
//每次循环都使报数为1的小孩永远位于队列头
#include <iostream>
#include <queue>
using namespace std;
int main()
{
queue<int> ysf;
int n,p,m;
cin>>n>>p>>m;
for(int i=1;i<=n;i++)
{
ysf.push(i);
}
for(int i=1;i<p;i++)
{
ysf.pop();
ysf.push(i);
}
while(!ysf.empty())
{
for(int i=1;i<m;i++)
{
int x=ysf.front();
ysf.pop();
ysf.push(x);
}
int y=ysf.front();
if(ysf.size()!=1)
{
cout<<y<<",";
}
else
cout<<y;
ysf.pop();
}
return 0;
}
全部评论
相关推荐
05-11 12:05
中国矿业大学 Java 点赞 评论 收藏
分享
点赞 评论 收藏
分享