- #include < iostream > #include < algorithm > using namespace std;
- const int N = 1111;
- char map[N][N];
- int dp[N][N];
- int main() {
- int n;
- while (cin >> n && n) {
- int ans = 0;
- for (int i = 1; i <= n; i++) for (int j = 1; j <= n; j++) cin >> map[i][j];
- if (n == 1) {
- cout << 1 << endl;
- continue;
- }
- for (int i = 1; i <= n; i++) dp[i][n] = dp[1][i] = 1;
- for (int i = 2; i <= n; i++) {
- for (int j = 1; j < n; j++) {
- int idx = 0;
- for (int k = 1; k <= dp[i - 1][j + 1]; k++) {
- if (map[i - k][j] != map[i][j + k]) {
- dp[i][j] = k;
- idx = 1;
- break;
- }
- }
- if (!idx) dp[i][j] = dp[i - 1][j + 1] + 1;
- ans = max(ans, dp[i][j]);
- }
- }
- cout << ans << endl;
- }
- }
来源: http://www.bubuko.com/infodetail-2312307.html