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;
         } 

猜你喜欢

转载自blog.csdn.net/QH_WYH/article/details/89739589
今日推荐