POJ 2965 The Pilots Brothers' refrigerator(枚举+位运算)
2012-08-08 11:44
423 查看
和POJ1753翻转棋有些类似,4*4棋盘,共2^16种翻转方法,暴力枚举即可。
也有另一种方法,遇+则翻一次,统计棋盘上每个点翻转的次数,为奇数的点即所求点
也有另一种方法,遇+则翻一次,统计棋盘上每个点翻转的次数,为奇数的点即所求点
//Memory: 672 KB //Time: 875 MS #include <iostream> #include <stdio.h> using namespace std; int main() { int i,j,k,sum=0,min=17,out; int map[17]; int temp[17]; char a; char b[10]; for(i=0;i<4;i++) { for(j=0;j<4;j++) { cin>>a; if(a=='-') map[i*4+j]=1; if(a=='+') map[i*4+j]=0; } gets(b); } for(i=0;i<16;i++) temp[i]=map[i]; for(i=0;i<=65536;i++) { k=i; sum=0; for(j=0;j<16;j++) { if((k&1)==1) { sum++; map[j%4]=map[j%4]^1; map[4+j%4]=map[4+j%4]^1; map[8+j%4]=map[8+j%4]^1; map[12+j%4]=map[12+j%4]^1; map[j-j%4]=map[j-j%4]^1; map[j-j%4+1]=map[j-j%4+1]^1; map[j-j%4+2]=map[j-j%4+2]^1; map[j-j%4+3]=map[j-j%4+3]^1; map[j]=map[j]^1; } k=k>>1; } for(j=0;j<16;j++) if(map[j]!=1) break; if(j==16 && sum<min) { min=sum; out=i; } for(j=0;j<16;j++) map[j]=temp[j]; } cout<<min<<endl; for(j=0;j<16;j++) { if((out&1)==1) cout<<j/4+1<<" "<<j%4+1<<endl; out=out>>1; } return 0; }
相关文章推荐
- 【枚举思考题】poj 2965 The Pilots Brothers' refrigerator
- POJ 2965 The Pilots Brothers' refrigerator 枚举
- poj2965 The Pilots Brothers' refrigerator(枚举,压缩)
- poj_2965 The Pilots Brothers' refrigerator(bfs+位运算)
- POJ-2965-The Pilots Brothers' refrigerator-bfs枚举-位运算
- POJ 2965 The Pilots Brothers' refrigerator 枚举dfs
- (poj1.1.2)2965(The Pilots Brothers' refrigerator——DFS+枚举)
- POJ 2965 The Pilots Brothers' refrigerator(dfs+枚举 || 规律)
- poj2965 The Pilots Brothers' refrigerator(直接计算或枚举Enum+dfs)
- POJ:2965 The Pilots Brothers' refrigerator(二进制枚举)
- poj 2965 The Pilots Brothers' refrigerator(dfs 枚举 +打印路径)
- POJ 2965 The Pilots Brothers' refrigerator(枚举+DFS)
- poj 2965 The Pilots Brothers' refrigerator 【dfs+枚举】【双十一大礼包】【刷题计划】
- POJ2965,The Pilots Brothers' refrigerator,枚举,DFS
- poj 2965 The Pilots Brothers' refrigerator——DFS(分类是枚举)
- poj 2965 The Pilots Brothers' refrigerator[ 枚举 ]
- poj 2965 The Pilots Brothers' refrigerator (枚举)
- POJ 2965 The Pilots Brothers' refrigerator(枚举)
- POJ 2965 The Pilots Brothers' refrigerator (枚举)
- The Pilots Brothers' refrigerator(POJ 2965)(dfs枚举+状态压缩)