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

 

posted @ 2015-01-25 14:02  null1019  阅读(116)  评论(0编辑  收藏  举报