标题:新手 学数组求解用数组解决约瑟夫问题。。。。。不是为了求作业,是在想了 ...
只看楼主
亢奋青年
Rank: 2
来 自:遵义市
等 级:论坛游民
帖 子:64
专家分:28
注 册:2013-11-2
结帖率:75%
已结贴  问题点数:10 回复次数:6 
新手 学数组求解用数组解决约瑟夫问题。。。。。不是为了求作业,是在想了好久,无法解决。。对于我好难啊,
1~M号围成一圈,第一个人开始报数,数到N的人出圈。。。。。直到最后一个人为止。。依次输出出圈人的编号,M预先设定,n键盘输出。如M=10,你n=5,依次输出为2,10,6,2,9,8,1,4,7,3.
     刚开始我的思路是;到n后,把数组位子改过,但好复杂。。。于是又想到如果把踢出的数弄为负数,就与开始的不同,但还是没解决调啊
搜索更多相关主题的帖子: 约瑟夫 键盘 
2013-11-23 17:56
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
得分:10 
int [M] = {1, 2, 3... M};
int count = M;
int ip = -1;        //被踢的人的下标

while(count > 1)
{
   for (i = 0;i < N;++i)
   {
      ip = (ip + 1) % M;
      while (a[ip] == 0)    ip = (ip + 1) % M;
   }

   print  a[ip];
   a[ip] = 0, count--;
}


[fly]存在即是合理[/fly]
2013-11-23 21:04
亢奋青年
Rank: 2
来 自:遵义市
等 级:论坛游民
帖 子:64
专家分:28
注 册:2013-11-2
得分:0 
回复 2楼 azzbcc
没有看的懂啊、、、

my time,my chips.
2013-11-24 20:26
亢奋青年
Rank: 2
来 自:遵义市
等 级:论坛游民
帖 子:64
专家分:28
注 册:2013-11-2
得分:0 
回复 2楼 azzbcc
不是要报数到n啊,

my time,my chips.
2013-11-24 20:27
亢奋青年
Rank: 2
来 自:遵义市
等 级:论坛游民
帖 子:64
专家分:28
注 册:2013-11-2
得分:0 
回复 2楼 azzbcc
新手啊,版主

my time,my chips.
2013-11-24 20:30
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
得分:0 
就是依照你的思路写的,我把 T出去的人的下标改为 0

在循环中注意把 值为 0的下标跳过就行了

ip = (ip + 1) % M; //这句代码是为了循环,比如 ip = M - 1 时,语句执行后ip = 0


[fly]存在即是合理[/fly]
2013-11-24 21:13
亢奋青年
Rank: 2
来 自:遵义市
等 级:论坛游民
帖 子:64
专家分:28
注 册:2013-11-2
得分:0 
回复 6楼 azzbcc
还是没有看的懂啊,约瑟夫问题啊,刚开始时的ip=-1;什么意思啊,围城一圈M个好,从一数到n 啊。。。还是不懂啊

my time,my chips.
2013-11-25 22:23



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-424069-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.547998 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved