萌新求助区间dp (90pts WA)
查看原帖
萌新求助区间dp (90pts WA)
531776
LYM20114楼主2022/11/19 20:06
#include <iostream>
#include <cstring>
#include <string>
using namespace std;
string s;
int len;
int f[55][55];
int dp(int l,int r){
	if(f[l][r] > -1) return f[l][r];
	if(l == r) return f[l][l] = 1;
	int maxn = 0x3f3f3f3f;
	if(s[l] == s[r]) maxn = min(maxn,min(dp(l + 1,r),min(dp(l,r - 1),dp(l + 1,r - 1) + 1)));
	for(int i = l;i < r;i++)
		maxn = min(maxn,dp(l,i) + dp(i + 1,r));
	return f[l][r] = maxn;
}
int main(){
	memset(f,-1,sizeof f);
	cin >> s;
	len = s.size();
	cout << dp(0,len - 1);
	return 0;
}
2022/11/19 20:06
加载中...