约瑟夫问题(有时也称为约瑟夫斯置换,是一个出现在计算机科学和数学中的问题。在计算机编程的算法中,类似问题又称为约瑟夫环。又称“丢手绢问题”.)有这样一个故事,15个教徒和15个非教徒在深海遇险必须讲一半的人投到海中,其余的人才能获救,于是想出这样过一个办法,30个人围城一圈。从第一个人开始一次报数,...
分类:
编程语言 时间:
2014-07-22 22:51:37
阅读次数:
263
圆圈中最后剩下的数字(递推公式) 代码(C++)本文地址: http://blog.csdn.net/caroline_wendy题目: 0,1...,n-1这n个数字排成一个圆圈, 从数字0开始每次从这个圆圈里删除第m个数字.求出这个圆圈里最后剩下的数字.可以推导出约瑟夫环的递推公式, 使用循环进行求解, 时间复杂度O(n), 空间复杂度O(1).代码:/*
* main.cpp
*
*...
分类:
编程语言 时间:
2014-07-16 17:25:12
阅读次数:
206
题意:变形的约瑟夫环模型,每个人有一个数字a,从第K个人开始出列,如果数字是正的,就往后数a个人出列,如果书负数,就往反方向数。然后用最基本的线段树处理约瑟夫环的方法即可但是题目要求的是第x个出列的人的名字,x为1-N中约数最多的数中的最小的那个。这里需要求反素数,即不大于N约数最多的。写起来比较多...
分类:
其他好文 时间:
2014-07-15 08:50:32
阅读次数:
241
圆圈中最后剩下的数字(循环链表) 代码(C++)本文地址: http://blog.csdn.net/caroline_wendy题目: 0,1...,n-1这n个数字排成一个圆圈, 从数字0开始每次从这个圆圈里删除第m个数字.求出这个圆圈里最后剩下的数字.使用循环链表, 依次遍历删除, 时间复杂度O(mn), 空间复杂度O(n).代码:/*
* main.cpp
*
* Created ...
分类:
编程语言 时间:
2014-07-13 16:15:24
阅读次数:
226
约瑟夫环形问题有30人将其编号,从头开始1,2,3数数,每到3将其删除,一共删去15个数。输出被删去的15个数#includeusing namespace std;struct LinkList{ int val; LinkList* next; LinkList(int a):val(a)...
分类:
其他好文 时间:
2014-07-09 23:43:04
阅读次数:
246
题目:有编号从 1 到 n 的 n 个人坐成一圈报数,报到 m 的人出局,下一位再从 1 开始, 如此持续,直止剩下一位为止,报告此人的编号 X。输入 n, m,求出 X题解分析:一开始有 n 个人,报到 m 的人出局后,如果我们从刚才出局的那人的下一位开始重新从 1 开始编号,原问题就转化为了一个...
分类:
其他好文 时间:
2014-06-28 10:01:14
阅读次数:
152
【Joseph问题描述】n个人(编号0~(n-1)),从0开始报数,报到(m-1)的退出,剩下的人继续从0开始报数。求胜利者的编号。 【求解思路】我们知道第一个人(编号一定是m%n-1) 出列之后,剩下的n-1个人组成了一个新的约瑟夫环(以编号为k=m%n的人开始): k k+1 k+2 ... n...
分类:
其他好文 时间:
2014-06-27 15:12:22
阅读次数:
228
将链表头尾倒置将几个链表合并成一个新的链表,将链表中重复的节点去掉,并按大小排序双向循环链表单向循环链表(约瑟夫循环)多项式相加程序源代码单链表、单向循环链表结点类packagejavab;publicclassNode{intdata;Nodenext;publicNode(intdata){th...
分类:
编程语言 时间:
2014-06-14 19:39:06
阅读次数:
267
约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。以下是使用循环链表和数组的两种实现:
分类:
其他好文 时间:
2014-06-12 21:18:46
阅读次数:
251