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 }