📄 josephus1.cpp
字号:
#include "SeqList.h" //顺序表类
void display(int n,int s,int d)
{
SeqList ring1(n); //声明并初始化顺序表ring1
ring1.create(n); //顺序表ring1中添加n个自然数
cout<<"ring:\t";
ring1.output();
int i,j,k;
i=s-1; //从第s个开始计数
k=n;
while(k>1) //n-1个人依次出环
{
j=0;
while(j<d)
{
i=i%n+1; //将顺序表看成环形
if(ring1.get(i)!=0) //不能以ring1.table[i]形式访问SeqList类中的private变量table
j++; //计数
}
cout<<"out : "<<ring1.get(i)<<"\t";
ring1.set(i,0); //第i个人出环,设置第i个位置为空
k--;
cout<<"ring:\t";
ring1.output();
}
i=1;
while(i<=n && ring1.get(i)==0) //寻找最后一个人
i++;
cout<<"The final person is "<<ring1.get(i)<<"\n";
}
void main(void)
{
display(5,1,2);
}
/*
程序运行结果:
ring: 1 2 3 4 5
out : 2 ring: 1 0 3 4 5
out : 4 ring: 1 0 3 0 5
out : 1 ring: 0 0 3 0 5
out : 5 ring: 0 0 3 0 0
The final person is 3
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -