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

 

你可能感兴趣的:(ca)