75
51
Hãy luôn nhớ cảm ơn và vote 5*
nếu câu trả lời hữu ích nhé!
4
3
#include <bits/stdc++.h>
#define ll long long
#define faster ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define name "delete"
using namespace std;
const int nmax = 307;
int t, n, dp[nmax][nmax];
string s;
int solve(int l, int r)
{
if (l >= r) return 1;
if (dp[l][r] != -1) return dp[l][r];
int res = (s[l] == s[r]) ? solve(l+1, r-1) : nmax;
for(int k = l; k < r; ++k)
res = min(res, solve(l, k) + solve(k+1, r));
return dp[l][r] = res;
}
int main()
{
faster;
freopen(name".inp", "r", stdin);
freopen(name".out", "w", stdout);
cin >> t;
while (t--)
{
cin >> s;
n = s.size();
for(int i = 0; i < n; ++i)
for(int j = 0; j < n; ++j) dp[i][j] = -1;
cout << solve(0, n-1) << '\n';
}
return 0;
}
Đây nha bạn code AC 100%
Hãy giúp mọi người biết câu trả lời này thế nào?
Bảng tin