用C++编写约瑟夫环的代码,也就是出圈问题,n个人,数到k出圈,接着从1开始数,一直到最后一个人, 20

用C++编写约瑟夫环的代码,也就是出圈问题,n个人,数到k出圈,接着从1开始数,一直到最后一个人,输出出圈的序号。C++,用循环链表。... 用C++编写约瑟夫环的代码,也就是出圈问题,n个人,数到k出圈,接着从1开始数,一直到最后一个人,输出出圈的序号。C++,用循环链表。 展开
 我来答
叁生万物
2015-10-25 · TA获得超过6259个赞
知道小有建树答主
回答量:2871
采纳率:41%
帮助的人:1026万
展开全部
#include <iostream> 
using namespace std; 
int main() 

 int n,s,m; 
    cout<<"please input the valuse of n,m,s"<<endl;
 cin>>n>>m>>s;
    if(n<=0||s<=0||m<=0)
 { 
 cout<<"error"<<endl;
 } 
 int i,j,k,temp;//k为次数 
 int A[100]; 
 for(i=0;i<n;i++)
 { 
  A[i]=i+1;
 }//建立数组 
 i=s-1;//设定开始报数的起始位置 
 for(k=n;k>1;k--)
 { 
  i=((i+m-1)%k);//计算要报数人序号 
  if(i!=k-1)
  { 
   temp=A[i]; 
   for(j=i;j<k-1;j++) 
   A[j]=A[j+1];//将i位置一直到k-1位置元素向前移一位 
   A[k-1]=temp;//将报数的人移动至数组最后 
  } 
 } 
    cout<<"the jodephus order is"<<endl;
 for(k=n-1;k>=0;k--)
 {   
        
  cout<<A[k]<<" ";//反向输出输出数组元素即为所求数列 
 } 

  return 0; 
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式