C++第15周项目3 -约瑟夫环 谁践踏了优雅 2022-04-16 00:56 104阅读 0赞 **分享一下我老师大神的人工智能教程!零基础,通俗易懂![http://blog.csdn.net/jiangjunshow][http_blog.csdn.net_jiangjunshow]** **也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!** 课程首页地址:[http://blog.csdn.net/sxhelijian/article/details/7910565][http_blog.csdn.net_sxhelijian_article_details_7910565],本周题目链接:[http://blog.csdn.net/sxhelijian/article/details/9018813][http_blog.csdn.net_sxhelijian_article_details_9018813] 【项目3】Josephus(约瑟夫环)问题 n个小孩子围成一圈,从第一个小孩子开始顺时针方向数数字,到第m个小孩子离开,这样反反复复,最终只剩下一个小孩子,求第几个小孩子留下? 提示:约瑟夫环即是一个首尾相连的链表,在建立好这个环以后,从头结点开始,每次间隔m孩子删除一个结点,直至只余下一个结点(删除了n-1个)。 ![20130604071651484][] 参考下面的代码,也可以自行设计类。 //链表结点kid,其中number为这个人的编号struct kid{ int number; kid *next;};//约瑟夫环类class joseph_ring{ private: int n;//用于存放人数 int m;//用于存放初始密码 kid *head;//链表的头结点,初始化时指向1号孩子public: joseph_ring(int nn, int mm);//创建nn个孩子,间隔为mm的约瑟夫环 ~joseph_ring(); void show();//运算并输出的成员函数};//定义joseph_ring类中的成员函数……int main(){ int n,m; cout<<"n="; cin>>n; cout<<"m="; cin>>m; joseph_ring j(n,m); j.show(); return 0;} 参考解答: #include <iostream>using namespace std;//链表结点kid,其中number为这个人的编号struct kid{ int number; kid *next;};//约瑟夫环类class joseph_ring{ private: int n;//用于存放人数 int m;//用于存放间隔 kid *head;//链表的头结点public: joseph_ring(int nn, int mm);//创建nn个孩子,间隔为mm的约瑟夫环 ~joseph_ring(); void show();//运算并输出的成员函数};//创建nn个孩子,间隔为mm的约瑟夫环joseph_ring::joseph_ring(int nn, int mm){ n=nn; //构造函数,把成员变量赋初值 m=mm; kid *p1,*p2; //定义2个临时指针 for(int i=1; i<=n; i++)//for循环用于初始化环 { p1=new kid; p1->number=i; //编号 if(i==1) //如果当前链表为空,头指针指向第一个人 { head=p1; p2=p1; } else //否则,p2永远指向尾结点,新建立的结点都插入到p2之后 { p2->next=p1; p2=p1; } } p2->next=head;//把链表连成一个循环链表}joseph_ring::~joseph_ring(){ delete head; head=NULL;}void joseph_ring::show() //执行出圈操作{ kid *p1,*p2,*p; int count; p1=head; for(int i=1; i<=n-1; i++)//有n个人,所以执行n-1次循环,删除n-1个人 { count=1; //用count定位到第m个人,循环后,p1指向这个人,p2指向这个人的上一个人 while(count<m) { p2=p1; //p2指向前一个 p1=p1->next; count++; } cout<<p1->number<<"\t";//这指向的是当前要删除人 p=p1;//p指向当前这个人 p2->next=p1->next;//将当前出圈人的直接前驱和直接后继连接起来 p1=p1->next;//下次从当前人的下一个人开始数 delete p;//释放内存 } cout<<endl; cout<<"The last one is No. "<<p1->number<<endl; head=p1; //环中只剩下了一个结点}int main(){ int n,m; cout<<"n="; cin>>n; cout<<"m="; cin>>m; joseph_ring j(n,m); j.show(); return 0;} #### 给我老师的人工智能教程打call![http://blog.csdn.net/jiangjunshow][http_blog.csdn.net_jiangjunshow] #### ![这里写图片描述][SouthEast] [http_blog.csdn.net_jiangjunshow]: https://blog.csdn.net/jiangjunshow/article/details/77338485 [http_blog.csdn.net_sxhelijian_article_details_7910565]: http://blog.csdn.net/sxhelijian/article/details/7910565 [http_blog.csdn.net_sxhelijian_article_details_9018813]: http://blog.csdn.net/sxhelijian/article/details/9018813 [20130604071651484]: /images/20220416/2be58070f592403884632c8095560459.png [SouthEast]: /images/20220416/3ea670d9bb5a4988bb1abdbbc5e21566.png
相关 约瑟夫环 约瑟夫环 1、参考资料 https://blog.csdn.net/shuaicihai/article/details/54847433 2、使用数组 痛定思痛。/ 2022年11月27日 06:54/ 0 赞/ 186 阅读
相关 约瑟夫环 package com.someusefuldesign.demo; import java.util.ArrayList; /约瑟 桃扇骨/ 2022年08月13日 15:54/ 0 赞/ 184 阅读
相关 约瑟夫环 \include<stdio.h> \include<stdlib.h> /\ 约瑟夫环是一个数学的应用问题: 已知n个人(以编号1,2,3...n分别表示)围 ╰半夏微凉°/ 2022年08月07日 01:53/ 0 赞/ 205 阅读
相关 约瑟夫环 约瑟夫环 约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个 怼烎@/ 2022年07月15日 13:39/ 0 赞/ 200 阅读
相关 约瑟夫环 N个人坐成一个圆环(编号为1 - N),从第1个人开始报数,数到K的人出列,后面的人重新从1开始报数。问最后剩下的人的编号。 例如:N = 3,K = 2。2号先出列,然后是 桃扇骨/ 2022年06月11日 06:26/ 0 赞/ 209 阅读
相关 约瑟夫环 【问题描述】 编号为 1,2,...,n 的 n 个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。现在给定一个随 机数 m>0,从编号为 1 的人开始,按顺时针方向 1 今天药忘吃喽~/ 2022年04月22日 06:06/ 0 赞/ 256 阅读
相关 C++第15周项目3 -约瑟夫环 分享一下我老师大神的人工智能教程!零基础,通俗易懂![http://blog.csdn.net/jiangjunshow][http_blog.csdn.net_jiangju 谁践踏了优雅/ 2022年04月16日 00:56/ 0 赞/ 105 阅读
相关 约瑟夫环 > 约瑟夫环运作如下: > 1、一群人围在一起坐成 \[2\] 环状(如:N) > 2、从某个编号开始报数(如:K) > 3、数到某个数(如:M)的时候,此人出列, 阳光穿透心脏的1/2处/ 2022年03月22日 16:38/ 0 赞/ 304 阅读
相关 约瑟夫环 约瑟夫环:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规 曾经终败给现在/ 2022年02月28日 00:54/ 0 赞/ 240 阅读
相关 约瑟夫环 编号为1,2,…,n的n个人按顺时针方向围坐在一张圆桌周围,每人持有一个密码(正整数)。一 开始任选一个正整数m作为报数上限值,从第一个人开始按顺时针方向自1开始报数,报到m时 r囧r小猫/ 2021年12月20日 04:29/ 0 赞/ 322 阅读
还没有评论,来说两句吧...