cf C. Purification

http://codeforces.com/contest/330/problem/C

这道题分三种情况。有一行全是E,有一列全是E,还有一种为无解的情况。

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <algorithm>
 4 #define maxn 200
 5 using namespace std;
 6 
 7 char g[maxn][maxn];
 8 int r[maxn],c[maxn];
 9 
10 int main()
11 {
12     int n;
13     scanf("%d",&n);
14     for(int i=0; i<n; i++)
15     {
16         scanf("%s",g[i]);
17     }
18     memset(r,0,sizeof(r));
19     memset(c,0,sizeof(c));
20     bool flagr=false;
21     bool flagc=false;
22     for(int i=0; i<n; i++)
23     {
24         for(int j=0; j<n; j++)
25         {
26             if(g[i][j]=='E')
27             {
28                 r[i]++;
29                 c[j]++;
30                 if(r[i]==n) flagr=true;
31                 if(c[j]==n) flagc=true;
32             }
33         }
34     }
35     if(flagc&&flagr)
36     {
37         printf("-1
");
38         return 0;
39     }
40     if(flagr)
41     {
42         for(int i=0; i<n; i++)
43         {
44             for(int j=0; j<n; j++)
45             {
46                 if(g[j][i]=='.')
47                 {
48                     printf("%d %d
",j+1,i+1);
49                     break;
50                 }
51             }
52         }
53     }
54     else if(flagc)
55     {
56         for(int i=0; i<n; i++)
57         {
58             for(int j=0; j<n; j++)
59             {
60                 if(g[i][j]=='.')
61                 {
62                     printf("%d %d
",i+1,j+1);
63                     break;
64                 }
65             }
66         }
67     }
68     else
69     {
70         for(int i=0; i<n; i++)
71         {
72             for(int j=0; j<n; j++)
73             {
74                 if(g[i][j]=='.')
75                 {
76                     printf("%d %d
",i+1,j+1);
77                     break;
78                 }
79             }
80         }
81     }
82     return 0;
83 }
View Code
原文地址:https://www.cnblogs.com/fanminghui/p/3673992.html