约瑟夫环
来源:互联网 发布:java方法重写规则 编辑:程序博客网 时间:2024/05/16 09:26
递推公式为:
ans[i]; //第i轮杀掉 对应当前轮的编号为ans[i]的人
ans[0]=0;
ans[i]=(ans[i-1]+m-1)%(n-i+1); (i>1 , 总人数n=2k 则n-i为第i轮剩余的人数)
ans[i]求得的是第i轮,编号从队首(并不是又开始数数,而是队首)为零计数出队的人的编号。
附上poj1012
//Memory Time
代码
//184K 250MS
include
using namespace std;
int main(void)
{
int Joseph[14]={0}; //打表,保存各个k值对应的m值
int k; while(cin>>k) { if(!k) break; if(Joseph[k]) { cout<<Joseph[k]<<endl; continue; } int n=2*k; //总人数 int ans[30]={0}; //第i轮杀掉 对应当前轮的编号为ans[i]的人 //PS:每一轮都以报数为“1”的人开始重新编号 int m=1; //所求的最少的报数 for(int i=1;i<=k;i++) //轮数 { ans[i]=(ans[i-1]+m-1)%(n-i+1); //n-i为剩余的人数 if(ans[i]<k) //把好人杀掉了,m值不是所求 { i=0; m++; //枚举m值 } } Joseph[k]=m; cout<<m<<endl; } return 0;
}
0 0
- 约瑟夫问题、约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- C++第四次上机实验—学生类
- 大数据量时Mysql的优化要点
- C++ 第4次上机实验报告-学生类
- C++作业4
- Social 实现分享功能
- 约瑟夫环
- hibernate总结
- iPhone5、6、6+手机型号判断(宏定义)
- VMware安装版本的问题
- 使用IntelliJ IDEA 15和Maven创建Java Web项目
- C++第四次实验
- HMM(隐马尔科夫模型)在股票上的简单应用
- 旧版 npm 安装 node_modules 模块目录层次过深,导致 win 下无法删除
- C# Redis Server分布式缓存编程(二)