鱼C论坛

 找回密码
 立即注册
查看: 3387|回复: 7

[已解决]求助,约瑟夫问题

[复制链接]
发表于 2017-10-20 12:22:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
pp.png

这是约瑟夫的问题,左边是小甲鱼的循环写法,右边是我的,有两个问题:1:假如m=2的话,循环会执行吗?  2:为什么有m%=n
最佳答案
2017-10-20 13:03:35
问题1:不会,只有在i=1执行一次,你想一下,数到三就死掉,第一个人开始,执行一次到第二个人就好了,因为那个循环是用来寻找死掉的前一个人,然后让前一个人连着死的后一个人。
问题2:假设n个人,但是要数字是>n的,比如10个人,数到13就死掉,要是程序也一个一个数过来无疑会增加时间复杂度,所以 m = m % n;后直接去除圈数,得到余数就是从头开始数的数字,一步到位。
问题3:你说一样?你自己写的在链表data是从0开始吗?如果是从0开始,那的确会和小甲鱼老师的一样,因为他是从1开始的

pp2.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-10-20 12:23:50 | 显示全部楼层
pp图片是小甲鱼的,pp2是我的’
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-20 12:24:29 | 显示全部楼层
还有一个问题:两个的执行结果为什么相同
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-20 13:03:35 | 显示全部楼层    本楼为最佳答案   
问题1:不会,只有在i=1执行一次,你想一下,数到三就死掉,第一个人开始,执行一次到第二个人就好了,因为那个循环是用来寻找死掉的前一个人,然后让前一个人连着死的后一个人。
问题2:假设n个人,但是要数字是>n的,比如10个人,数到13就死掉,要是程序也一个一个数过来无疑会增加时间复杂度,所以 m = m % n;后直接去除圈数,得到余数就是从头开始数的数字,一步到位。
问题3:你说一样?你自己写的在链表data是从0开始吗?如果是从0开始,那的确会和小甲鱼老师的一样,因为他是从1开始的

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-20 13:40:05 | 显示全部楼层
打印是从1开始的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-20 13:42:52 | 显示全部楼层
丶忘却的年少o 发表于 2017-10-20 13:03
问题1:不会,只有在i=1执行一次,你想一下,数到三就死掉,第一个人开始,执行一次到第二个人就好了,因为 ...

Node *creatLinkList(int n){

   int i;
   Node *head,*p,*r;

   head=(Node*)malloc(sizeof(Node));
   p=head;

   for(i=1;i<=n;i++){

   r=(Node*)malloc(sizeof(Node));
   r->data=i;

   p->next=r;
   p=r;

}
  r->next=head->next;
   free(head);
   return r->next;
}

这是创建链表的代码,打印是从1开始的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-20 13:51:57 | 显示全部楼层
寻找思考的意义 发表于 2017-10-20 13:42
Node *creatLinkList(int n){

   int i;

我知道了,小甲鱼老师的m是数字,n是人数,你的程序m是人数,n是数字。
小甲鱼老师的在这个设定下执行 m %= n 和没执行一样所以m还是3,循环就执行1次;你的程序中 m %= n后,m = 2,也就循环一次。你自己看下你们的程序,脑子里走一遍,就从m %= n 开始到for判断这里
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-26 04:20:26 | 显示全部楼层
你的代码2是巧合  程序无法体现环  只是个能运行的程序
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-24 02:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表