链接:click here~~
题意:假设有2k个人围着一个圆桌坐着,前k个是好人,后k个是坏人 。现在开始,每m个人踢掉一个,比如有6个人,m=5,那么,被踢掉的人依次是5,4,6,2,3,1。现在要求,在踢掉第一个好人前,必需把所有的坏人踢掉,问,给定一个k,求满足这个要求的最小的m,现在希望你写一个程序,快速的帮助小珂,计算出来这个m。
思路:我们来回想一下最基本的约瑟夫环问题, n个人...
分类:
其他好文 时间:
2015-02-22 19:35:24
阅读次数:
199
题意:约瑟夫环问题。 输入n是总人数,数到k的人离队。 输出离队顺序。
做法:因为要输出在原串中的位置,所以用了树状数组加二分来找。树状数组开始每个点都初始化为1,然后离队的改为减一。对于sum(x),x是原来环的 标号,sum(x) 就表示 当前 减少了人数的环中 对应的 是第几个。...
分类:
编程语言 时间:
2015-02-12 10:44:55
阅读次数:
166
题目链接:http://poj.org/problem?id=3517
约瑟夫环问题详细分析并递归实现...
分类:
其他好文 时间:
2015-01-24 00:32:19
阅读次数:
183
/** * 约瑟夫环问题主要是考虑下标问题,只要解决了下标控制问题,这个题目就不难了 * 在这里我是分成了3中情况: * 1,下标小于剩余人数时:删除当前元素,并将下标后移 * 2.下标大于剩余人数时:用下标对剩余人数取于,删除元素,并下移下标 * 3.下标等于剩余人数或者是剩余人...
分类:
其他好文 时间:
2015-01-23 20:06:07
阅读次数:
185
约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人開始报数,数到m的那个人出列;他的下一个人又从1開始报数,数到m的那个人又出列;依此规律反复下去,直到圆桌周围的人所有出列。C代码例如以下(joseph.cpp):#include#incl...
分类:
其他好文 时间:
2015-01-19 12:10:16
阅读次数:
270
今天看视频教程无意间看到了一个数3减1的问题,百度之发现叫约瑟夫环问题,于是写了程序,问题大致描述如下:一群带有编号的孩子手拉手围成一个圈报数,开始的孩子数1,他右边数2,再右边数3,数到n的孩子out,接着从下一个孩子开始继续数1,数到n的孩子out,如此循环...问最后留下来的孩子是原来的多少号...
分类:
编程语言 时间:
2015-01-08 07:05:12
阅读次数:
204
Problem C: 士兵报数
Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 142 Solved: 68
[Submit][Status][Web
Board]
Description
N个站成一列的士兵和一个整数M,士兵编号是1 --- N。每次士兵按编号从小到大的顺序依次报数,如果报的数不是M的倍数,则该士兵出列。...
分类:
其他好文 时间:
2015-01-04 19:22:13
阅读次数:
271
约瑟夫环问题——初步了解+数组实现
一开始接触约瑟夫环问题,还是在C语言的书中,具体的题目如下:n个人围坐成一圈,选某个人开始(比如第1个),从1开始报数,沿着顺时针方向数到m的人被淘汰,然后后面一个人继续再从1开始报数,数到m时再淘汰一人。重复上面的过程,输出剩下的最后一个人。...
分类:
编程语言 时间:
2015-01-03 18:40:43
阅读次数:
184
题目描述:
给出一个长度是n的字符串环,每次搁k个加入字符串中对应位置的字母序的下一个字母,执行m次,问最后一次插入的是什么字母。
大致思路:
正着想的话只能用模拟的方法解决,但是m有10^9这么大,而把问题倒过来想一下的话,那就变成了给出一个n+m的字符串每次搁k个字符删掉一个,最后剩下一个长度为n的字符串,问起始位置是什么字母。这样的话就变成了约瑟夫问题,约瑟夫环问题可以在不用考虑内容的...
分类:
其他好文 时间:
2014-12-10 22:56:50
阅读次数:
225