利用C++应该怎么解决“约瑟夫问题”?
2个回答
展开全部
#include<iostream>
using namespace std;
int a[10010]; //数组的值代表是否出局
int main()
{
int n,m,f,s,t;// n为总人数,m为报的数,f为计数器
//s为出局人数
cin>>n>>m;
f=s=0;
t=1;
while(s<n-1) //当出局人数为n-1的时候结束循环;
{
if(a[t]==0) f++;//状态为0,说明未出局,第t个人报数
if(f==m)
{
cout<<t<<" ";
a[t]=1;//第t个人标记出局
s++; //出局人数加1
f=0;//计数器清0
}
t++;//位置往下移
if(t>n) t=1; //当m>n时,报数到n之后,从第一个开始
}
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询