| Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
|---|---|---|---|---|---|---|---|---|---|
| 38626 | 申东铉 | 【J】T3 | C++ | 通过 | 100 | 9 MS | 336 KB | 868 | 2025-10-18 13:47:27 |
#include <bits/stdc++.h> using namespace std; int T,n; string s; bool dp[302][302]; signed main () { ios::sync_with_stdio(); cin.tie(0); cout.tie(0); cin >> T; while (T--) { memset(dp,0,sizeof(dp)); cin >> n; cin >> s; s = ' ' + s; for (int i = 1;i <= n;i++) { dp[i][i - 1] = 1; } for (int i = 2;i <= n;i++) { for (int j = 1;j + i - 1 <= n;j++) { int l = j,r = j + i - 1; if (s[l] == s[r]) { dp[l][r] |= dp[l + 1][r - 1]; dp[l][r] |= dp[l + 2][r - 1]; dp[l][r] |= dp[l + 1][r - 2]; for (int k = l + 1;k < r;k++) { dp[l][r] |= (dp[l + 1][k - 1] & dp[k + 1][r - 1]); } } for (int k = l;k < r;k++) { dp[l][r] |= (dp[l][k] & dp[k + 1][r]); } } } if (dp[1][n]) { cout << "YES" << endl; } else { cout << "NO" << endl; } } return 0; }