hdu 4403 枚举

#include<cstdio>
#include<cstring>
#include<iostream>
#include<cmath>
#include<algorithm>
#include<vector>
using namespace std; const int maxe = ;
const int maxn = ;
const int INF = 0x3f3f3f; vector<int> l[maxn];
vector<int> r[maxn]; char s[maxn]; inline int cal(int a,int b){
int ret = ;
for(int i=a;i<=b;i++)
ret = ret* + s[i] - '';
return ret;
}
int main()
{
//freopen("E:\\acm\\input.txt","r",stdin); while(scanf("%s",s+) && s[]!='E'){
int N = strlen(s+);
for(int i=;i<=N;i++) l[i].clear();
for(int i=;i<=N;i++) r[i].clear(); l[].push_back(s[]-'');
for(int i=;i<=N-;i++){ for(int j=;j<i;j++){
int num = cal(j+,i);
if(j == ){
l[i].push_back(num);
continue;
}
for(int k=;k<l[j].size();k++){
l[i].push_back(l[j][k] + num);
}
}
sort(l[i].begin(),l[i].end());
}
r[N].push_back(s[N]-'');
for(int i=N-;i>=;i--){
for(int j=N+;j>i;j--){
int num = cal(i,j-);
if(j == N+){
r[i].push_back(num);
continue;
}
for(int k=;k<r[j].size();k++){
r[i].push_back(r[j][k] + num);
}
}
sort(r[i].begin(),r[i].end());
} int ans = ;
for(int i=;i<=N-;i++){
for(int j=;j<l[i].size();j++){
for(int k=;k<r[i+].size();k++){
if(l[i][j] == r[i+][k]){
ans++;
}
}
}
}
printf("%d\n",ans);
}
}
上一篇:《JavaScript Ninja》之挥舞函数


下一篇:velocity 是如何实现内省 屏蔽反射的