📄 约瑟夫(顺序).cpp
字号:
#include<iostream.h>
#include<string.h>
void joseph(int,int,int []);
void main()
{ cout<<"输入参数:"<<endl;
int m,n; //n个人,报的数为m
cout<<"席上总人数n=:";cin>>n;
cout<<"约定报的数m=:";cin>>m;
int *L=new int[n]; //创建数组,存储退席序号
for(int i=1;i<=n;i++)
L[i]=i;
cout<<"退席顺序如下: ";
joseph(m,n,L);
cout<<endl;
}
void joseph(int m,int n,int L[])
{
int s=1; //设从第1个人开始报数
for(int j=n;j>1;j--)
{ s=(s+m-1)%j; //下一个出列人的序号
if(s==0) s=j;
int t=L[s]; //暂存出列人原编号
for(int k=s;k<=j-1;k++)//移动数组数据,删除出列人
L[k]=L[k+1];
L[j]=t; //将出列人移到数组尾
}
for(int i=n;i>=1;i--) //打印出列人编号
cout<<L[i];
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -