http://codeforces.com/contest/245/problem/E
枚举任意段内 ‘+’个数和‘-’个数的差(绝对值) 取最大
可以 O(n^2)
代码:
#include<iostream> #include<stdio.h> #include<string.h> #include<math.h> #include<algorithm> #include<vector> #include<set> #include<map> #include<string> #include<queue> #include<stack> #include <iomanip> using namespace std; #define LL long long const int INF=0x3f3f3f3f; int main() { //freopen("data.in","r",stdin); string s; while(cin>>s) { int ans=0; int n=s.size(); for(int i=0;i<n;++i) { int sum1=0; int sum2=0; for(int j=i;j<n;++j) { if(s[j]=='+') ++sum1; else ++sum2; ans=max(ans,abs(sum1-sum2)); } } cout<<ans<<endl; } return 0; }