Partitioning by Palindromes

#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
#define itn int
#define retrun return
#define _memset(a) memset((a), 0, sizeof((a)))

int dp[1010];
char s[1010];

bool judge(int l, int r) {
    while (l < r) {
        if (s[l] != s[r]) return 0;
        l++;
        r--;
    }
    return 1;
}

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    int t;
    cin >> t;
    while (t--) {
        cin >> (s + 1);
        int len = strlen(s + 1);
        for (int i = 1; i <= len; i++) {
            dp[i] = i;
            for (int j = 0; j <= i; j++) {
                if (judge(j + 1, i)) dp[i] = min(dp[j] + 1, dp[i]);
            }
        }
        cout << dp[len] << endl;
    }
    //system("pause");
    return 0;
}

上一篇:动态规划求解多段图问题


下一篇:《Splunk智能运维实战》——2.10 制作应用程序内存使用情况的图表