33,008
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
using namespace std;
#define N 301
bool matrix[N][N];
int nr, nc;
bool good(int i1, int j1, int size)
{
if ( (i1<0) || (j1<0) || (i1+size-1>=nr) || (j1+size-1>=nc) ) return false;
for (int k = 0; k < size; k++) {
if (matrix[i1][j1+k] != matrix[i1+size-1][j1+size-k-1]) return false;
if (matrix[i1+k][j1] != matrix[i1+size-k-1][j1+size-1]) return false;
}
return true;
}
int get()
{
int ms = -1;
for (int i = 0; i < nr; i++) {
for (int j = 0; j < nc; j++) {
if (ms != -1) {
int k = ms/2;
if (!good(i-k, j-k, 2*k+1)) continue;
}
for (int k = 1; ; k++) {
if (good(i-k, j-k, 2*k+1)) ms = max(ms, 2*k+1);
else break;
}
}
}
for (int i = 0; i < nr; i++) {
for (int j = 0; j < nc; j++) {
if (ms != -1) {
int k = ms/2;
if (!good(i-k, j-k, 2*k+2)) continue;
}
for (int k = 0; ; k++) {
if (good(i-k, j-k, 2*k+2)) ms=max(ms, 2*k+2);
else break;
}
}
}
return ms;
}
int main()
{
char pstr[N];
cin >> nr >> nc;
cin.getline(pstr, N);
for (int i = 0; i < nr; i++) {
cin.getline(pstr, N);
for (int j = 0; j < nc; j++) {
matrix[i][j] = (pstr[j] == '1') ? true : false;
}
}
cout << get() << endl;
return 0;
}
#include <iostream>
using namespace std;
bool matrix[400][400];
int nr, nc;
bool good(int i1, int j1, int size)
{
for (int k = 0; k < size; k++) {
if (matrix[i1][j1+k] != matrix[i1+size-1][j1+size-k-1]) return false;
if (matrix[i1+k][j1] != matrix[i1+size-k-1][j1+size-1]) return false;
}
return true;
}
int get()
{
int ms = -1;
for (int i = 0; i < nr; i++) {
for (int j = 0; j < nc; j++) {
for (int k = 1; ((i>=k)&&(j>=k)&&(i+k<nr)&&(j+k<nc)); k++) {
if (good(i-k, j-k, 2*k+1)) ms = max(ms, 2*k+1);
else break;
}
}
}
for (int i = 0; i < nr-1; i++) {
for (int j = 0; j < nc-1; j++) {
for (int k = 0; ((i>=k)&&(j>=k)&&(i+k+1<nr)&&(j+k+1<nc)); k++) {
if (good(i-k, j-k, 2*k+2)) ms=max(ms, 2*k+2);
else break;
}
}
}
return ms;
}
int main()
{
char pstr[400];
cin >> nr >> nc;
cin.getline(pstr, 400);
for (int i = 0; i < nr; i++) {
cin.getline(pstr, 400);
for (int j = 0; j < nc; j++) {
matrix[i][j] = (pstr[j] == '1') ? true : false;
}
}
cout << get() << endl;
return 0;
}