N个人围成一圈报数,报到某一个数m的就出局,问你最后剩下来的人的号码?网上通用约瑟夫环的算法是://函数接收n和m,返回最后出圈的是第几个人/*e.g.yuesefu(5,2)=3yuesefu(2,100)=1*/intyuesefu(intn,intm){inti,r=0;for(i=2;i<=n;i++)r=(r+m)%i;returnr+1;}用python实现..
分类:
编程语言 时间:
2017-02-19 19:13:02
阅读次数:
232
import java.util.ArrayList; public class Test8 { /** * @param args * 约瑟夫环 * 幸运数字 */ public static void main(String[] args) { System.out.println(getLuc... ...
分类:
其他好文 时间:
2017-02-17 20:28:34
阅读次数:
146
约瑟夫环问题的具体描述是:设有编号为1,2,……,n的n个(n>0)个人围成一个圈,从第1个人开始报数,报到m时停止报数,报m的人出圈,才从他的下一个人起重新报数,报到m时停止报数,报m的出圈,……,如此下去,知道剩余1个人为止。当任意给定n和m后,设计算法求n个人出圈的次序。 一开始看到这这个题目 ...
分类:
编程语言 时间:
2017-02-12 20:16:24
阅读次数:
248
我们构造一个循环链表来表示排成圆圈的人。每个人的链接指向圆圈内在他左边的人。正数i表示圆圈内的第i个人。已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全 ...
分类:
其他好文 时间:
2017-01-30 10:31:47
阅读次数:
190
约瑟夫斯问题(有时也称为约瑟夫斯置换),是一个出现在计算机科学和数学中的问题。在计算机编程的算法中,类似问题又称为约瑟夫环。 有{\displaystyle n}个囚犯站成一个圆圈,准备处决。首先从一个人开始,越过{\displaystyle k-2}个人(因为第一个人已经被越过),并杀掉第k个人。 ...
分类:
编程语言 时间:
2017-01-17 23:50:57
阅读次数:
566
转载于:http://blog.163.com/soonhuisky@126/blog/static/157591739201321341221179/ 关于约瑟夫环问题,无论是用链表实现还是用数组实现都有一个共同点:要模拟整个游戏过程,不仅程序写起来比较烦,而且时间复杂度高达O(nm),当n,m非 ...
分类:
其他好文 时间:
2017-01-14 19:49:39
阅读次数:
191
一,循环链表的概念 1.什么是循环链表 所谓的循环链表就是让单向链表的首尾相连,组成一个环状。 2.循环链表的典型应用 约瑟夫环问题。 3.实现循环链表的重点 1,循环链表在插入第一个元素的时候,需要我们将第一元素的指针域指向其自身,也就构成了循环链表。 2,循环链表基于单向链表而生,单是比循环链表 ...
分类:
其他好文 时间:
2017-01-07 08:15:18
阅读次数:
227
描述 有n个人,坐成一个圈,每个人的编号是0,1,2,3,4,5,6,7,8,9,......n; 从0开始报数,每次报道第m个人的时候,这个人出局,并且从下一个人开始重新报数,知道这个圈只剩下两个人。 input 给一个n,m, output 求出最后一个人的编号是多少 simple input ...
分类:
其他好文 时间:
2016-12-28 14:48:45
阅读次数:
153
可以这样理解这个方法:当有n个人的时候,他们的编号依次是0、1、2、3、4、………、n-1。假设最后编号为x(n)的人会留下来。因为数到m的那个人会出列,那么此轮中编号为(m-1)%n的人会出列,编号为(m+0)%n的人将做为下一轮编号为0的人,此轮编号为(m+i)%n的人将做为下一轮编号为i的人… ...
分类:
其他好文 时间:
2016-12-14 01:15:56
阅读次数:
177
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt355 假设下标从0开始,0,1,2 .. m-1共m个人,从1开始报数,报到k则此人从环出退出,问最后剩下的一个人的编号是多少? 现在假设m=10 0 1 2 3 4 5 6 ...
分类:
编程语言 时间:
2016-11-22 12:55:28
阅读次数:
287