1 #include<iostream> 2 using namespace std; 3 char a[20][20]; 4 char b1[20][20]; 5 char b2[20][20]; 6 bool check1(char p[20][20]); 7 bool check2(char p[20][20]); 8 int n; 9 void check(); 10 int r,c; 11 int endr,endc; 12 char ch,endch; 13 int main() 14![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif) ![](http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif) { 15 int i,j; 16 int cas; 17 cin>>cas; 18 while(cas--) 19![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) { 20 for(i=1;i<=19;i++) 21 for(j=1;j<=19;j++) 22 cin>>a[i][j]; 23 check(); 24 } 25 return 0; 26 } 27![](http://www.cppblog.com/Images/OutliningIndicators/None.gif) 28 void check() 29![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif) ![](http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif) { 30 int i,j,k; 31 char temp; 32 for(i=1;i<=19;i++) 33![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) { 34 for(j=i;j<=19;j++) 35![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) { 36 b1[i][j]=a[j][i]; 37 b1[j][i]=a[i][j]; 38 } 39 } 40 41![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) if(check1(a))/**//////////////////////////////横行 42![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) { 43 cout<<ch<<endl; 44 cout<<r<<' '<<c<<endl; 45 return; 46 } 47![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) if(check1(b1))/**///////////////////////////////////纵行(转置后的a相当于b) 48![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) { 49 cout<<ch<<endl; 50 cout<<c<<' '<<r<<endl; 51 return; 52 } 53![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif) 54![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif) 55![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) if(check2(a))/**//////////////////////////////////下三角a 56![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) { 57 cout<<ch<<endl; 58 cout<<r<<' '<<c<<endl; 59 return; 60 } 61![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) if(check2(b1))/**////////////////////////////////////上三角a相当于下三角b 62![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) { 63 cout<<ch<<endl; 64 cout<<c<<' '<<r<<endl; 65 return; 66 } 67 68![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) for(i=19,j=1;i>=j;i--,j++)/**//////////////////////////////列转置 69![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) { 70 k=1; 71 while(k<=19) 72![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) { 73 b2[k][i]=a[k][j]; 74 b2[k][j]=a[k][i]; 75 k++; 76 } 77 } 78 79![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) if(check2(b2))/**//////////////////////////////////////////从右上到左下,计算下三角 80![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) { 81 cout<<ch<<endl; 82 cout<<endr<<' '<<20-endc<<endl; 83 return; 84 } 85 86 for(i=1;i<=19;i++) 87![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) { 88 for(j=i;j<=19;j++) 89![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) { 90 temp=b2[i][j]; 91 b2[i][j]=b2[j][i]; 92 b2[j][i]=temp; 93 } 94 } 95![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) if(check2(b2))/**///////////////////////////////////////////计算上三角 96![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) { 97 cout<<ch<<endl; 98 cout<<endc<<' '<<20-endr<<endl; 99 return; 100 } 101 102 else cout<<'0'<<endl; 103 } 104 bool check1(char p[20][20]) 105![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif) ![](http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif) { 106 int i,j,k; 107 for(i=1;i<=19;i++) 108![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) { 109 for(j=1;j<=15;j++) 110![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) { 111 if(p[i][j]=='0') 112 continue; 113 for(k=1;k<=4;k++) 114![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) { 115 if(p[i][j+k]!=p[i][j]) 116 break; 117 } 118 if(k==5) 119![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) { 120 if(j+k==20) 121![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) { 122 r=i; 123 c=j; 124 ch=p[i][j]; 125 return true; 126 } 127 else if(p[i][j+k]==p[i][j]) 128![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) { 129 while(p[i][j]==p[i][j+k]) 130![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) { 131 k++; 132 if(j+k==20) 133 break; 134 } 135 j=j+k-1; 136 } 137 else 138![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) { 139 ch=p[i][j]; 140 r=i; 141 c=j; 142 return true; 143 } 144 } 145 else 146![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) { 147 j=j+k-1; 148 } 149 } 150 } 151 return false; 152 } 153![](http://www.cppblog.com/Images/OutliningIndicators/None.gif) 154 bool check2(char p[20][20]) 155![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif) ![](http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif) { 156 int i,j,k,m; 157 for(i=1;i<=15;i++) 158![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) { 159 j=1; 160 m=i; 161 while(j<20&&m<20) 162![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) { 163 if(p[m][j]=='0') 164![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) { 165 j++; 166 m++; 167 continue; 168 } 169 170 for(k=1;k<=4;k++) 171![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) { 172 if(p[m][j]!=p[m+k][j+k]) 173 break; 174 } 175 if(k==5) 176![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) { 177 if(j+k==20) 178![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) { 179 ch=p[m][j]; 180 endch=p[m+k-1][j+k-1]; 181 r=m; 182 c=j; 183 endr=m+k-1; 184 endc=j+k-1; 185 return true; 186 } 187 else if(p[m+k][j+k]==p[m][j]) 188![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) { 189 m=m+k; 190 j=j+k; 191 while(p[m][j]==p[m-1][j-1]) 192![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) { 193 m++; 194 j++; 195 if(m>=20) 196 break; 197 } 198 } 199 else 200![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) { 201 ch=p[m][j]; 202 endch=p[m+k-1][j+k-1]; 203 r=m; 204 c=j; 205 endr=m+k-1; 206 endc=j+k-1; 207 return true; 208 } 209 } 210 else 211![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif) { 212 j=j+k; 213 m=m+k; 214 } 215 } 216 } 217 return false; 218 }
|