zoukankan      html  css  js  c++  java
  • POJ-1753

    题目链接:http://poj.org/problem?id=1753

    题目概述:有4*4的正方形,每个格子要么是黑色,要么是白色,当把一个格子的颜色改变(黑->白或者白->黑)时,其周围上下左右(如果存在的话)的格子的颜色也被反转,问至少反转几个格子可以使4*4的正方形变为纯白或者纯黑?

     1 #include"iostream"
     2 using namespace std;
     3 
     4 bool qipan[6][6]={false};
     5 bool flag;
     6 int  a[]={-1,1,0,0,0};
     7 int  b[]={0,0,-1,1,0};
     8 int step;
     9 bool panduan(){
    10     for(int i=1;i<=4;i++)
    11         for(int j=1;j<=4;j++)
    12             if(qipan[i][j]!=qipan[1][1])
    13                 return false;
    14     return true;
    15 }
    16 void bianhuan(int c,int d){
    17     for(int i=0;i<5;i++)
    18         qipan[c+a[i]][d+b[i]]=!qipan[c+a[i]][d+b[i]];
    19 }
    20 void dfs(int row,int tow,int deep){
    21     if(deep==step){
    22         flag=panduan();
    23         return;    
    24     }
    25     if(row||tow==5)
    26         return;
    27     bianhuan(row,tow);
    28     if(row<4)
    29         dfs(row,tow+1,deep+1);
    30     else
    31         dfs(row+1,tow,deep+1);
    32     bianhuan(row,tow);
    33     if(row<4)
    34         dfs(row,tow+1,deep);
    35     else
    36         dfs(row+1,tow,deep);
    37     return;
    38 }
    39 int main(){
    40     char temp;
    41     int i,j;
    42     for(i=1;i<5;i++)
    43         for(j=1;j<5;j++)
    44         {
    45             cin>>temp;
    46             if(temp=='b') 
    47                 qipan[i][j]=true;
    48         }
    49 
    50     for(step=0;step<=16;step++)  //对每一步产生的可能性进行枚举
    51     {                            //至于为什么是16,考虑到4x4=16格,而每一格只有黑白两种情况,则全部的可能性为2^16
    52         dfs(1,1,0);
    53         if(flag)break;
    54     }
    55 
    56     if(flag)
    57         cout<<step<<endl;
    58     else
    59         cout<<"Impossible"<<endl;
    60     return 0;
    61 }
  • 相关阅读:
    遍历路径下的所有文件
    房间安排(题目168)
    创建BitMap
    字母统计(241)
    DataTable的Select方法
    ArcEngine中Feature对象的Shape属性和ShapeCopy属性
    C# 轻松获取路径中文件名、目录、扩展名等
    TreeList获取节点中的值
    【算法】LeetCode算法题-Two Sum
    JSP(一):初识JSP
  • 原文地址:https://www.cnblogs.com/hutonm/p/5471485.html
Copyright © 2011-2022 走看看