约瑟夫问题(有时也称为约瑟夫斯置换,是一个出现在计算机科学和数学中的问题。在计算机编程的算法中,类似问题又称为约瑟夫环。又称“丢手绢问题”.)有这样一个故事,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
小孩报数问题
Time Limit: 1000MS
Memory Limit: 65536K
Total Submissions: 9883
Accepted: 4597
Description
有N个小孩围成一圈,给他们从1开始依次编号,现指定从第W个开始报数,报到第S个时,该小孩出列,然后从下一个小孩开始报数,仍是报到S个出列...
分类:
其他好文 时间:
2014-07-16 17:20:23
阅读次数:
160
约瑟夫题目变形,思路和前面白书那个例题差不多~~#include#include#include#include#define maxn 500009using namespace std;int dp1[maxn];int dp2[maxn];int dp3[maxn];int main(){ ....
分类:
其他好文 时间:
2014-07-16 16:00:16
阅读次数:
185
题意:变形的约瑟夫环模型,每个人有一个数字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
不敢死队问题
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
说到“敢死队”,大家不要以为我来介绍电影了,因为数据结构里真有这么道程序设计题目,原题如下:
有M个敢死队员要炸掉敌人的一个碉堡,谁都不想去,排长决定用轮回数数的办法来决定哪个战士去执行任务。如果前一个战士没完成任务,则要再派一个战士上去。...
分类:
其他好文 时间:
2014-07-13 13:59:16
阅读次数:
149
约瑟夫问题是一个很经典的问题,描述的是n的人围成一圈,每次数到第m个人就会被淘汰,之后在淘汰的人开始在数起第m个人,这样下去只带还剩下1个人为胜利者,这个题是约瑟夫问题的变形,它每次裁定的标准不再是一个恒定的m而是按照素数表中的第i次淘汰第i个人,所以我们需要求出素数表才能知道裁定的次序,也才能求出剩下的人的序号
首先,对于约瑟夫原本的问题是可以对每次淘汰使用逐个列举,将这n个人每个人都列举,没...
分类:
其他好文 时间:
2014-07-02 08:09:42
阅读次数:
286