没用Dp,过了七个,求问题在哪
查看原帖
没用Dp,过了七个,求问题在哪
505207
zx202000楼主2021/10/5 16:32
cpp
#include<iostream>
#include<string.h>
#include<stdio.h>

using namespace std;


string a;
int vis[200]{0};
int dp[200];
int ans = 1;



int main()
{

	cin>>a;
	dp[0] = 1;
	vis[a[0]] = 1;
	for(int i =1;i<a.length();i++)
	{
		if(vis[a[i]] == 0)
		{
			ans++;
			vis[a[i]]++;
			dp[i] = dp[i-1]+1;
		 } 
		else
		{
			int c = i -1;
			int tm = 0x7fffffff;
			while(a[c] != a[i])
			{
				tm = min(tm,dp[c]);
				c--;	
			}

			if(dp[c]<tm)
			{
				dp[i] = dp[c];
			}
			else
			{
				dp[i] = dp[i-1] + 1;
				ans++;
			}
		}

	}
	cout<<ans<<endl;


	return 0;
 }
2021/10/5 16:32
加载中...