josephus1.cpp

来自「是一本教程的实例代码,可以下载后直接运行,即可以得到答案.」· C++ 代码 · 共 45 行

CPP
45
字号
#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 + =
减小字号Ctrl + -
显示快捷键?