poj 1753 Flip Game(枚举)
2011-10-02 09:48
381 查看
http://blog.acmj1991.com/?p=769
题意:给你一个4*4的图,你能对图上的点进行操作。当你操作一点时会把它本身以及上下左右都改变成相反的状态,求用最少的操作数使图所有的点变成一种状态(所有的都为b or w)。
思路:其实这题和1222差不多,就是枚举第一行的值其它的值就是确定的。然后取其中的最小值
题意:给你一个4*4的图,你能对图上的点进行操作。当你操作一点时会把它本身以及上下左右都改变成相反的状态,求用最少的操作数使图所有的点变成一种状态(所有的都为b or w)。
思路:其实这题和1222差不多,就是枚举第一行的值其它的值就是确定的。然后取其中的最小值
#include<stdio.h> #include<string.h> #include<iostream> using namespace std; #define maxN 10 int b_map[maxN][maxN],map[maxN][maxN],f[maxN][maxN]; int dir[4][2]={0,1,1,0,0,-1,-1,0}; int n=4; int min(int x,int y){return x<y?x:y;} char str[maxN][maxN]; void fun(int xx,int yy) { map[xx][yy]=!map[xx][yy]; for(int i=0;i<4;i++) { int x=xx+dir[i][0],y=yy+dir[i][1]; if(x<1||x>4||y<1||y>4)continue; map[x][y]=!map[x][y]; } } int get_min(int l) { memset(map,0,sizeof(map)); memset(f,0,sizeof(f)); int minn=20; for(int i=0;i<n;i++) for(int j=0;j<n;j++) b_map[i+1][j+1]=(str[i][j]=='b'?l:!l); for(int h=0;h<16;h++) { memcpy(map,b_map,sizeof(b_map)); for(int i=1;i<=n;i++) { f[1][i]=!f[1][i]; if(f[1][i])break; } int sum=0; for(int i=1;i<=n;i++) if(f[1][i]){ sum++; fun(1,i); } for(int i=2;i<=n;i++) for(int j=1;j<=n;j++) if(map[i-1][j]){ fun(i,j); sum++; f[i][j]=1; } int flag=1; for(int i=1;i<=n;i++) if(map [i]){ flag=0;break; } if(sum<minn&&flag)minn=sum; } return minn; } int main() { while(~scanf("%s",&str[0])) { for(int i=1;i<n;i++){ scanf("%s",&str[i]); } int m=min(get_min(1),get_min(0)); if(m<=16)printf("%d\n",m); else printf("Impossible\n"); } }
相关文章推荐
- POJ 1753 Flip Game (枚举 + 位运算)
- POJ 1753 Flip game ( 高斯消元枚举自由变量)
- poj1753-Flip Game(高斯消元枚举xor线性方程自由变元的值,找为1解的最少数量)
- POJ训练计划1753_Flip Game(枚举+BFS)
- POJ 1753 Flip Game(高斯消元法,枚举自由变元)
- 枚举状态POJ1753-Flip Game(枚举)
- POJ-1753 Flip Game【枚举+BFS+位存储】
- POJ 1753 Flip Game (枚举)
- POJ 1753 Flip Game (枚举)
- POJ 1753 Flip Game 枚举
- Flip Game(poj1753_阵列的枚举)
- POJ-1753 Flip Game 枚举 状态压缩
- POJ 1753 Flip Game(枚举+状态压缩BFS)
- POJ 1753 Flip Game (递归枚举)
- POJ 1753 Flip Game 枚举
- poj1753--Flip Game(高斯消元问题2,枚举自由元的首杀)
- POJ 1753 Flip Game (递归枚举)
- Flip Game (poj 1753)枚举+二进制
- POJ 1753 Flip Game(二进制枚举)
- POJ 1753 Flip Game(枚举+DFS)