📄 约瑟夫环(数组表示).cpp
字号:
#include<iostream>
using namespace std;
#define maxlen 30
typedef int elemtype;
typedef struct{
elemtype elem[maxlen];
int length;
}sqlist;
sqlist joseph;
void initlist_sq(sqlist &l){
l.length=0;
}
void jos(int m, int n){
cout<<"请依次输入"<<n<<"个密码:";
for(;joseph.length<n;joseph.length++)
cin>>joseph.elem[joseph.length];//赋密码值
cout<<"出列顺序为:";
int i=-1;//i为数组下标(下一值为0)
for(int k=0;k<n;k++){
for(int j=0;j<m;){
i=(i+1)%n;
if(joseph.elem[i]!=0)
j++;
}
cout<<i+1<<" ";
m=joseph.elem[i];
joseph.elem[i]=0;
}
cout<<endl;
}
void main(){
int m,n;//m为密码,n为小孩个数
cout<<"请输入初始密码m和人数n(n不大于30):";
do
{
cin>>m>>n;
if(n<1||n>30) cout<<"人数不合法,请重输(n不大于30):"<<endl;
}while(n<1||n>30);
initlist_sq(joseph);// 初始化线性表
jos(m,n);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -