2 条题解
-
0
#include <bits/stdc++.h> using namespace std; const int MAXN = 105; int dp[MAXN][MAXN], a[MAXN], t, n; int main() { scanf("%d", &t); for (int cas = 1; cas <= t; cas++) { scanf("%d", &n); for (int i = 1; i <= n; i++) { scanf("%d", &a[i]); } memset(dp, 0, sizeof(dp)); for (int i = 1; i <= n; i++) { dp[i][i] = 1; } for (int len = 2; len <= n; len++) { for (int i = 1; i + len - 1 <= n; i++) { int j = i + len - 1; dp[i][j] = dp[i][j-1] + 1; for (int k = i; k < j; k++) { if (a[k] == a[j]) { dp[i][j] = min(dp[i][j], dp[i][k] + dp[k+1][j-1]); } } } } printf("Case %d: %d\n", cas, dp[1][n]); } return 0; }
信息
- ID
- 2799
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- 递交数
- 87
- 已通过
- 18
- 上传者