• [kuangbin带你飞]专题一 简单搜索


     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 using namespace std;
     6 int x, y;
     7 bool g[20][20];
     8 bool k[20][20]; 
     9 bool ans[20][20];
    10 bool flag;
    11 int d[5][2] = {{0,-1},{0,1},{-1,0},{1,0},{0,0}};
    12 bool judge(int cur)
    13 {
    14     for(int i = 1; i <= x; i++)
    15         for(int j = 1; j <= y; j++)
    16         {
    17             k[i][j] = g[i][j];
    18         }
    19     for(int j = 0; j < y; j++)
    20     {
    21         k[0][j+1] = (cur>>j)%2;
    22     }
    23 
    24     for(int i = 1; i <= x; i++)
    25         for(int j = 1; j <= y; j++)
    26         {
    27             if(k[i-1][j] == false)    continue;
    28             ans[i][j] = true;
    29             for(int z = 0; z <= 4; z++)
    30             {
    31                 k[i+d[z][0]][j+d[z][1]] = !k[i+d[z][0]][j+d[z][1]];
    32             }
    33         }
    34         
    35     for(int j = 1; j <= y; j++)
    36     {
    37         if(k[x][j])    return false;
    38     }
    39     return true;
    40 }
    41 int main()
    42 {
    43 //    freopen("in.in","r",stdin);
    44     while(scanf("%d%d",&x,&y)!=EOF)
    45     {
    46         flag = false;
    47         for(int i = 1; i <= x; i++)
    48             for(int j = 1; j <= y; j++)
    49             {
    50                 scanf("%d",&g[i][j]);
    51             }
    52         for(int i = 0; i < (1<<y); i++)
    53         {
    54             memset(ans,0,sizeof(ans)); 
    55             
    56             if(judge(i))
    57             {
    58                 flag = true;
    59                 break;
    60             }    
    61     
    62         }
    63         if(flag)
    64         {
    65             for(int i = 1; i <= x; i++)
    66             {
    67                 cout<<ans[i][1];
    68                 for(int j = 2; j <= y; j++)
    69                 {
    70                     cout<<" "<<ans[i][j];
    71                 }        
    72                 printf("
    ");
    73             }        
    74         }
    75         else    printf("IMPOSSIBLE
    ");        
    76     }
    77 
    78 
    79     return 0;
    80 }
  • 相关阅读:
    第三周学习进度总结
    第二周学习进度总结
    动手动脑04
    动手动脑03
    动手动脑02
    课堂实践总结
    课堂实践
    原码,反码和补码学习报告
    开学第一周
    第八周
  • 原文地址:https://www.cnblogs.com/you-well-day-fine/p/4255605.html
Copyright © 2020-2023  润新知