约瑟夫问题
摘要:经典的Joseph问题吧,说有n个要被处决的人(编号0~(n-1)),从0开始报数,报到(m-1)的会被杀掉,剩下的人继续从0开始报数,如此下去最后剩的一个人会存活下来: 很明显剩下未处死的人编号为0我们来研究一下相邻两次的操作:x:012345……m-2m-1mm+1……n-1n人y:n-2删除01n-1人对比这两次操作发现 同一人的序号 之间的关系:x=(y+m)%n因此可以从后往前递推: 存活人序号:(最后一次) :t=0 (倒数第二次) :t=(t+m)%2 (有2人) (倒数第三次):t=(t+m)%3 (有3人)因此: 核心算法:int ans=0;//存活人最...
阅读全文
posted @ 2012-08-21 18:18
浙公网安备 33010602011771号