重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
int result[n]; //这个数组用来存放结果,为了一一对应,n个人里,第一个的序号是0,不是我们习惯采用的1。int flag[n]; //这个数组用来标记这个n个人的状态,一一对应,报过3的所对应的标记为1,否则0。
企业建站必须是能够以充分展现企业形象为主要目的,是企业文化与产品对外扩展宣传的重要窗口,一个合格的网站不仅仅能为公司带来巨大的互联网上的收集和信息发布平台,成都创新互联公司面向各种领域:白乌鱼等成都网站设计、营销型网站建设解决方案、网站设计等建站排名服务。
此问题被称为约瑟夫问题,比较经典。下面为单链表处理上述问题并对问题进行了优化,即你可以输入每次报到几时有人退出圈子和刚开始从第几个人开始报数。
每次不止退出一个人。因为是报到3的就退出。但是您只执行了n--应该是n-=(n+1)/3。或者是n=j。这样的话才是正确的。
这个问题是著名的Josephus排列,就是要用指针和链表才是正确的思路。不用指针就暂时放置这题。若有非指针解你完全可以采纳他,若没有用指针正确写的,请结贴。
建议少用goto,按照你的代码结构,可以简化。
请考生编制函数Josegh()实现此功能并调用函数WriteDat()把结果p输出到文件OUT.DAT中。
变换后就完完全全成为了(n-1)个人报数的子问题,注意(1)式和(4)式,是同一个问题,不同的仅仅是人数。
这个问题叫约瑟夫环问题。n个人围成一圈,按顺序编号,分别为.n。(你可以理解成每个人的座号)。然后1号开始,每人依次报号。
s;for(int j = n; j=1; j--){ s1=(s1+m-1)%j;if(s1== 0) s1 = j;int w = P.Getnode(s1 - 1);P.Remvoe(s1 - 1);P.Insert(w,n-1);} } 以前学C语言的时侯写的,希望对你有用。
这个问题是著名的Josephus排列,就是要用指针和链表才是正确的思路。不用指针就暂时放置这题。若有非指针解你完全可以采纳他,若没有用指针正确写的,请结贴。
这个问题叫约瑟夫环问题。n个人围成一圈,按顺序编号,分别为.n。(你可以理解成每个人的座号)。然后1号开始,每人依次报号。
初看此题,觉得有意思,准备做一下。构思过程细看,发现其核心逻辑有漏洞,无法继续下去……n的取值要求是0n20,就是说可以取1~19的整数;倘若取1或2,就无法找到小于n的素数m,使题无解。
请考生编制函数Josegh()实现此功能并调用函数WriteDat()把结果p输出到文件OUT.DAT中。