第四周项目5--猴子选大王

来源:互联网 发布:唐筛看男女的软件 编辑:程序博客网 时间:2024/06/05 00:11
/**COPYRIGTH (c) 2017, YTU CS  *All rigth reserve  *作者:王铭泽  *完成日期:2017.10.19 *版本号:v1.0  *  *问题描述:群猴子,编号是1,2,3 …m,这群猴子(m个)按照1-m的顺序围坐一圈。从第1只开始数,每数到第n个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。输入m和n,输出为大王的猴子是几号。*注:所有代码除了标准命名外全为自己coding. */  #include<iostream>using namespace std;struct Monkey{  int num;  struct Monkey *next;};int main(){    //出事输入    int m,n;    cout<<"请输出猴子个数和截止个数:"<<endl;    cin>>m>>n;    //建立圆圈    Monkey *p1,*p2,*head;    int i;    p2=p1=new Monkey;    head=p1;    for(i=1;i<m;i++)    {        p1=new Monkey;        p1->num=i+1;        p2->next=p1;        p2=p1;    }    p2->next=head;    //开始选大王    int king;    int j;    p1=head;    //共淘汰m-1只猴子次。    for(i=1;i<m;i++)    {        for(j=1;j<n-1;j++)            p1=p1->next;            p2=p1->next;            p1->next=p2->next;            p1=p2->next;            delete p2;    }    king=p1->num;    delete p1;cout<<"猴子大王是名为:"<<king<<"的猴子"<<endl;return 0;}

本问题是经典问题,它问题在于对逻辑的要求,并且在单链表的运用上需要有一定功底。

结果:

原创粉丝点击