P5650 基础字符串练习题

设定'0'权值为1,设定'1'权值为-1
然后就是最大子段和

#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
int dp[100100],a[100100],len,n,ans;
char s[100100];
bool all1=true;
int main(){
	ans=-0x3f3f3f3f;
	memset(dp,-0x3f,sizeof(dp));
	scanf("%s",s+1);
	len=strlen(s+1);
	for(int i=1;i<=len;i++){
		if(s[i]=='1')
			a[i]=-1;
		else
			a[i]=1;
		dp[i]=max(dp[i-1]+a[i],a[i]);	
		ans=max(dp[i],ans);
	}
	printf("%d\n",ans);
	return 0;
}
posted @ 2019-11-14 14:17  dreagonm  阅读(114)  评论(0编辑  收藏  举报