HDU 1443 Joseph
2012-04-14 21:27
330 查看
#include <stdio.h> #define MAX 27 int next[MAX]; int pre[MAX]; int f(int k) { int m; for(m=k+1;;m++) { //badGuys负责坏人的计数,pointer模拟指针在链表中移动 int badGuys=0,found=0,pointer; //初始化模拟双向链表的数组,总共2*k个人 next[2*k]=1; pre[1]=2*k; for(int i=1;i<2*k;i++) { next[i]=i+1; pre[i+1]=i; } for(int len=2*k,pointer=2*k;;len--) { int road=m%len; if(road==0) road=len; while(road--) pointer=next[pointer]; if(pointer<=k) { break; } else { badGuys++; //删除所指坏人结点 int prePtr=pre[pointer]; int nextPtr=next[pointer]; next[prePtr]=nextPtr; pre[nextPtr]=prePtr; } if(badGuys==k) { found=1; break; } } if(found) break; } return m; } int main() { int k; int a[14]; //答案存入数组,否则会超时 for(int i=1;i<=13;i++) a[i]=f(i); while(scanf("%d",&k),k) printf("%d\n",a[k]); }
相关文章推荐
- HDU 1443 Joseph
- hdu 1443 Joseph (约瑟夫环)
- hdu 1443 Joseph (约瑟夫环)
- Hdu 1443 Joseph
- HDU 1443 Joseph 约瑟夫环问题
- HDU-1443 Joseph
- HDU 1443 Joseph
- HDU 1443 Joseph
- HDU 1443 Joseph
- hdu 1443 Joseph
- HDU-1443 Joseph
- hdu 1443 Joseph
- poj 1012 & hdu 1443 Joseph(约瑟夫环变形)
- hdu 1443 Joseph 约瑟夫环
- HDU 1443 Joseph
- HDU 1443 Joseph
- hdu 1443 Joseph+暴力打表
- HDU1443 Joseph
- HDU 1443 Joseph
- hdu -- 1443 Joseph