求助
查看原帖
求助
422171
Gold_Dino楼主2022/5/31 22:48
#include <bits/stdc++.h>
using namespace std;
string str; int n;
int dp[105][105];
int main(){
	int i, j, k, len;
	cin >> str;
	n = str.size();
	str = " " + str;
	for (i = 1; i <= n; i++)
		dp[i][i] = 1;
	for (len = 2; len <= n; len++)
		for (i = 1; i <= n - len + 1; i++){
			j = i + len - 1;
			dp[i][j] = 0x7ffffff;
			for (k = i; k < j; k++){
				dp[i][j] = min(dp[i][j], dp[i][k] + dp[k + 1][j]);
				int flag = 1;
				if (len % (k - i + 1) == 0){
					for (int x = i; x <= j; x++)
						if (str[x] != str[i + (x - i) % (k - i + 1)]){
							flag = 0;
							break;
						}
					if (flag == 1)
						dp[i][j] = min(dp[i][j], 3 + dp[i][k]);
				}
			}
		}
	cout << dp[1][n];
	return 0;
}

#1和#6一直过不了

2022/5/31 22:48
加载中...