【问题描述】
设计并实现一个解决约瑟夫环问题的类Joseph。当需要解决一个n个人间隔为m的约瑟夫环问题,可以构建一个对象Joseph obj(n, m),然后调用obj.simulate()输出模拟删除过程。
【输入形式】
输入为三个正整数n和m和k,空格分隔,分别代表编号长度和间隔长度和起始位置,编号长度n<=50。
【输出形式】
输出为n个整数,空格分隔。
#include<iostream> #include<string> using namespace std; class Joseph { public: Joseph(int m_n,int m_m,int m_k) { n=m_n; m=m_m; k=m_k; } void simulate() { int a[1000]={0},i,j=0,t=0; for(i=k-1;t<n-1;i++) { if(a[i]!=1) { j++; } if(j==m) { cout<<i+1<<" "; a[i]=1; j=0; t++; } if((i+1)==n) { i=(-1); } } for(i=0;i<n;i++) { if(a[i]!=1) cout<<i+1<<endl; } } private: int n; int m; int k; }; int main() { int m,n,k; cin>>n>>m>>k; Joseph obj(n, m,k); obj.simulate(); return 0; }
注意可以用变量设置数组的长度但不能同时初始化
版权声明:本文为m0_67718152原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。