C++解决简单的约瑟夫环问题——按被杀顺序输出序号

博客围绕约瑟夫环问题展开,问题描述为有n个人,从第s个人开始报数,报数为m的人被枪杀,需按被枪杀顺序输出序号,还给出了解决该问题的C++代码。

问题描述:有n个人 从第s个人开始报数 报数m的人被枪杀 按被枪杀的顺序输出序号;
代码:

         #include<iostream>
         using namespace std;
         int main()
        {
            int n,m,s;
            cin>>n>>m>>s;
            int b[n];
            for(int i=0;i<n;i++)
            b[i]=1;//将每个人初始标记为1;
            int renshu=n,sum=0;
            for(int i=s;;i=(i+1)%n)
            {
	            if(b[i]==1)sum++;//活着就报数;
	            if(b[i]==0)continue;//否则跳到下一个人;
	            if(sum==m)
                {
	 	            b[i]=0;
	 	            cout<<i<<" ";
	 	            renshu--;
	 	            sum=0;
	             }
	            if(renshu==0)break;//已无活人;
            }
            return 0;
         } 
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值