为什么这过不了
查看原帖
为什么这过不了
637788
kimi0705楼主2023/5/28 11:12
```CPP
#include <bits/stdc++.h>
using namespace std;
int dp[105][105], ans[105], n;
string A, B;
int main() {
    while(cin >> A >> B) {
        n = A.size();
        A = " " + A;
        B = " " + B;
        memset(dp, 127, sizeof (dp));
        for (int i = 1; i <= n; i++) dp[i][i] = 1;
        for (int len = 1; len <= n; len++) {
            for (int L = 1; L + len - 1 <= n; L++) {
                int R = L + len - 1;
                if(B[L] == B[R]) dp[L][R] = min(dp[L + 1][R], dp[L][R - 1]);
                else 
                    for (int k = L; k < R; k++) {
                        dp[L][R] = min(dp[L][R], dp[L][k] + dp[k + 1][R]);
                    }
            }
        }
        for(int i = 1; i <= n; i++) ans[i] = dp[1][i];
        for (int i = 1; i <= n; i++) {
            if(A[i] == B[i]) ans[i] = min(ans[i], ans[i - 1]);
            for (int k = 1; k < i; k++) {
                ans[i] = min(ans[i], ans[k] + dp[k + 1][i]);
            }
        }
        cout << ans[n];
    }
}

为啥我这过不了

2023/5/28 11:12
加载中...