poj1143 Number Game
来源:互联网 发布:linux sort命令 性能 编辑:程序博客网 时间:2024/06/10 12:59
发帖纪念我想了一整天的题,从早上到晚上现在
#include<cstdio>#include<algorithm>#include<cstring>#include<algorithm>#include<iostream>#include<climits>using namespace std;int dp[1<<19];int dfs(int state){ if(dp[state]>=0)return dp[state]; for(int i=0;i<19;i++) { if(state>>i&1) { int state2=state&~(1<<i); for(int j=i+1;j<19;j++) { if(state2>>j&1) { int dan=(j+2)-(i+2); //if((dan==0)||(dan!=1&&(state2>>(dan-2))==0)) if(dan!=1) { int flag=(state2>>(dan-2))&1; if(flag==0) state2=state2&~(1<<j); } } //printf("%d\n",state2); } if(dfs(state2)>=0) { if(dp[state2]==0) { dp[state]=1; return dp[state]; } //else continue; } } } dp[state]=0; return dp[state];}int main(){ int n; int num=1; memset(dp,-1,sizeof(dp)); dp[0]=0; while(~scanf("%d",&n)) { int w[30]; int sum=0; if(n==0)break; int state=0; for(int i=0;i<n;i++) { int a; scanf("%d",&a); state=state|1<<(a-2); } for(int i=0;i<19;i++) { if(state>>i&1) { int state2=state&~(1<<i); for(int j=i+1;j<19;j++) { if(state2>>j&1) { //printf("%d\n",j); int dan=(j+2)-(i+2); //printf("%d\n",dan); //if(dan==0||(dan!=1&&(state2>>(dan-2))==0)) if(dan!=1) { int flag=(state2>>(dan-2))&1; if(flag==0) { //printf("%d\n",state2); state2=state2&~(1<<j); } // printf("%d\n",state2); } } } //printf("%d\n",state2); if(dfs(state2)==0)w[sum++]=i+2; //printf("%d %d\n",state2,dp[state2]); } } //printf("%d\n",dp[2]); if(sum==0) { printf("Test Case #%d\n",num++); printf("There's no winning move.\n\n"); } else { printf("Test Case #%d\n",num++); printf("The winning moves are: "); sort(w,w+sum); for(int i=0;i<sum;i++) { printf("%d",w[i]); if(i==sum-1)printf("\n\n"); else printf(" "); } } } return 0;}
0 0
- poj1143(Number Game)
- poj1143 Number Game
- POJ1143:Number Game(状态压缩)
- POJ1143 Number Game 动态规划
- Number Game
- Number Game
- Number Game
- The four number game
- ZOJ 1039 Number Game
- POJ 1143 Number Game
- POJ 1143 Number Game
- [院赛]A number game
- ZOJ - 3180 Number Game
- zoj 1039 Number Game
- POJ 1143 Number Game
- poj 1143 Number Game
- zoj 1039 Number Game
- zoj 3180 Number Game
- 关于VIM中正则表达式的学习
- 利用URLClassLoader加载两个位置的Class
- Maven: Problem: Using json-lib in maven project
- 利用c++模板实现冒泡排序
- angularjs学习总结 详细教程
- poj1143 Number Game
- android开发之手势识别
- PRML-系列一之1.6
- IOS 开发上传管理器
- JVM原理和优化
- wordlist 1-page 4
- p122-16
- Ural 1203 Scientific Conference
- 用穷举法列出24点的解