求助玄学DP(玄关)
查看原帖
求助玄学DP(玄关)
448483
honghaojin楼主2024/10/15 12:44

为什么输出答案时减1才能过?我和题解的代码几乎一样啊。

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=60,inf=2e9+10;
char s[N];
int dp[N][N];
int main(){
	cin.getline(s+1,N);
	int n=strlen(s+1);
	for(int i=1;i<=n;++i)dp[i][i]=1;
	for(int len=2;len<=n;++len)
		for(int l=1,r=len;r<=n;++l,++r){
			if(s[l]==s[r]){
				dp[l][r]=dp[l][r-1];
				continue;
			}
			dp[l][r]=inf;
			for(int i=l;i<r;++i)
				dp[l][r]=min(dp[l][r],dp[l][i]+dp[i+1][r]);
		}
	cout<<dp[1][n]-1;//这里要-1
	return 0;
}
2024/10/15 12:44
加载中...