码迷,mamicode.com
首页 > 其他好文 > 详细

POJ 3279 Fliptile

时间:2016-05-12 15:53:26      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:

【题意】一个m*n的01矩阵,每次点击(x,y),那么她的上下左右以及本身就会0变1,1变0,问把矩阵变成全0的,最小需要点击多少步。

【分析】只需要枚举第一行的状态即可,后面的状态都可以根据第一行直接推出来,还要注意这题还有不存在的情况,详见代码!

【AC代码】

#include <map>
#include <set>
#include <queue>
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
int n,m;
int maze[15][15];
int ans[15][15];
int b[15][15];
void press(int x,int y){
    ans[x][y] = 1;
    b[x][y] = 1-b[x][y];
    if(x>0)   b[x-1][y] = 1-b[x-1][y];
    if(x<n-1) b[x+1][y] = 1-b[x+1][y];
    if(y>0)   b[x][y-1] = 1-b[x][y-1];
    if(y<m-1) b[x][y+1] = 1-b[x][y+1];
}
int main(){
    while(~scanf("%d%d",&n,&m)){
        for(int i=0; i<n; i++){
            for(int j=0; j<m; j++){
                scanf("%d",&maze[i][j]);
            }
        }
        bool flag=false;
        for(int s=0; s<(1<<m); s++){
            memset(ans,0,sizeof(ans));
            for(int i=0; i<n; i++){
                for(int j=0; j<m; j++){
                    b[i][j] = maze[i][j];
                }
            }
            for(int i=0; i<m; i++){
                if(s&(1<<i)) press(0,i);
            }
            for(int i=1; i<n; i++){
                for(int j=0; j<m; j++){
                    if(b[i-1][j]==1) press(i,j);
                }
            }
            bool fuck = true;
            for(int i=0; i<m; i++){
                if(b[n-1][i]==1) fuck = false;
            }
            if(fuck){
                flag = true;
                for(int i=0; i<n; i++){
                    for(int j=0; j<m-1; j++){
                        printf("%d ",ans[i][j]);
                    }
                    printf("%d\n",ans[i][m-1]);
                }
                break;
            }
        }
        if(flag==false)
            puts("IMPOSSIBLE");
    }
    return 0;
}


POJ 3279 Fliptile

标签:

原文地址:http://blog.csdn.net/just_sort/article/details/51361493

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!