70分蒟蒻求助
查看原帖
70分蒟蒻求助
358677
FishingRod楼主2021/5/3 00:23

请问为啥这样只有70,是哪里有问题嘛

#include<bits/stdc++.h>
using namespace std;
#define endl "\n"
typedef long long LL;
typedef pair<int,int> PII;
int T;
char s[55];
int f[55][55];
int work(int l,int r)
{
	if(f[l][r]!=-1)return f[l][r];
	if(l==r)return 1;
	int tmp=1e9+7;
	//在左端涂色
	if(s[l]==s[l+1])tmp=min(tmp,work(l+1,r));
	else tmp=min(tmp,work(l+1,r)+1);
	//在右端涂色
	if(s[r]==s[r-1])tmp=min(tmp,work(l,r-1));
	else tmp=min(tmp,work(l,r-1)+1);
	//两边一起涂色
	if(s[l]==s[r]&&r-l>=2)
	{
		if(s[l+1]==s[r-1]&&s[l]==s[l+1])tmp=min(tmp,work(l+1,r-1));
		else tmp=min(tmp,work(l+1,r-1)+1);
	}
	return f[l][r]=tmp;
}
void solve(int C)
{
	cin>>s+1;
	int n=strlen(s+1);
	memset(f,-1,sizeof f);
	cout<<work(1,n);
}

int main()
{
	solve(1);
	return 0;
}

2021/5/3 00:23
加载中...