poj 1012 Joseph
2011-07-20 22:28
281 查看
#include <iostream> //约瑟夫环 using namespace std; int res[14]; bool Joseph(int k,int m) { int len=2*k,i=0; while(len>k) { i=(i+m-1)%len; //i是被踢出的数的下标 if(i<k)return 0; //因为前k个都不能先选出来,所以前k个数的下标一直未变,只要i<k说明前k个数之一被踢出 //这样就不用把选中的数从数组中删除,并把每次删除的数与k进行比较,现在直接把坐标与k进行比较即可 len--; } return 1; } int main() { int k,i,j;bool tag; while(scanf("%d",&k)&&k) { if(!res[k]) { for(i=k;;i+=2*k) { tag=0; for(j=1;j<=k;j++) if(Joseph(k,i+j)) { res[k]=i+j; tag=1; break; } if(tag) break; } } printf("%d\n",res[k]); } return 0; }
相关文章推荐
- POJ 1012 Joseph
- poj 1012 Joseph(约瑟夫环)
- poj1012-Joseph(输出出列编号模板)
- POJ 1012 joseph
- poj 1012 joseph
- [POJ 1012] Joseph(约瑟夫)
- POJ 1012 Joseph
- POJ - 1012 Joseph
- POJ-1012 Joseph
- POJ 1012 Joseph
- Poj 1012 Joseph (约瑟夫环)
- [POJ1012]Joseph
- POJ 1012 Joseph题解与心得
- Poj 1012 Joseph
- poj 1012 Joseph 约瑟夫环变形
- POJ1012 Joseph
- POJ 1012(Joseph)
- 【Joseph问题】poj1012 Joseph
- POJ 1012 Joseph 笔记 G++
- poj 1012 & hdu 1443 Joseph(约瑟夫环变形)