首页 > 代码库 > cf B George and Cards

cf B George and Cards

题意:给你一个只有‘.’和‘#‘的n*n的格子,问所有的‘#‘是不是只属于一个十字叉,如果不是输出NO,否则输出YES。

技术分享
 1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 using namespace std; 5  6 int n; 7 char g[200][200]; 8 bool vis[200][200]; 9 10 int main()11 {12     scanf("%d",&n);13     for(int i=1; i<=n; i++)14     {15         scanf("%s",g[i]);16     }17     for(int i=1; i<=n; i++)18     {19         for(int j=0; j<n; j++)20         {21             if(g[i][j]==#)22             {23                 bool flag=false;24                 if(g[i+1][j-1]==#&&g[i+1][j]==#&&g[i+1][j+1]==#&&g[i+2][j]==#&&i+2<=n&&j-1>=0)25                 {26                     flag=true;27                     g[i+1][j-1]=.;28                     g[i+1][j]=.;29                     g[i+1][j+1]=.;30                     g[i+2][j]=.;31                     g[i][j]=.;32                 }33                 else if(g[i+1][j+1]==#&&g[i][j+1]==#&&g[i][j+2]==#&&g[i-1][j+1]==#&&j+2<n&&i+1<=n&&i-1>=1)34                 {35                     flag=true;36                     g[i+1][j+1]=.;37                     g[i][j+1]=.;38                     g[i][j+2]=.;39                     g[i-1][j+1]=.;40                     g[i][j]=.;41                 }42                 else if(g[i-1][j]==#&&g[i+1][j]==#&&g[i][j-1]==#&&g[i][j+1]==#&&j-1>=0&&i+1<=n&&i-1>=1&&j+1<n)43                 {44                     flag=true;45                     g[i-1][j]=.;46                     g[i+1][j]=.;47                     g[i][j-1]=.;48                     g[i][j+1]=.;49                     g[i][j]=.;50                 }51                 else if(g[i-1][j]==#&&g[i-2][j]==#&&g[i-1][j-1]==#&&g[i-1][j+1]==#&&j-1>=0&&i+1<=n&&i-2>=1&&j+1<n)52                 {53                     flag=true;54                     g[i-1][j]=.;55                     g[i-2][j]=.;56                     g[i-1][j-1]=.;57                     g[i-1][j+1]=.;58                     g[i][j]=.;59                 }60                 else if(g[i][j-1]==#&&g[i][j-2]==#&&g[i-1][j-1]==#&&g[i+1][j-1]==#&&j-2>=0&&i+1<=n&&i-1>=1&&j+1<n)61                 {62                     flag=true;63                     g[i][j-1]=.;64                     g[i][j-2]=.;65                     g[i-1][j-1]=.;66                     g[i+1][j-1]=.;67                     g[i][j]=.;68                 }69                 if(!flag)70                 {71                     printf("NO\n");72                     return 0;73                 }74             }75         }76     }77     printf("YES\n");78     return 0;79 }
View Code

 

cf B George and Cards