hdu 4403

时间:2021-02-19 17:26:18

水水的dfs

#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <algorithm> using namespace std;
char b[20];
int a[20], ans;
void dfs(int cur, int len)
{
if(cur == len - 1)
{
a[cur] = 1;
int d[2] = {}, k = 0;
int e = 0,flag = 1;
for(int i = 0; i < len; i++)
{
if(a[i] == 0)
e = e * 10 + b[i] - '0';
else if(a[i] == 1)
{
d[k] += e * 10 + b[i] - '0';
e = 0;
}
else if(a[i] == 2)
{
d[k] += e * 10 + b[i] - '0';
e = 0;
k++;
}
if(k >= 2)
{
flag = 0;
break;
}
}
if(flag && d[0] == d[1])
ans++;
}
else
{
for(int i = 0; i < 3; i++)
{
a[cur++] = i;
dfs(cur, len);
cur--;
}
}
}
int main()
{
while(scanf("%s",b) == 1 && strcmp(b, "END"))
{
ans = 0;
int len = strlen(b);
int cur = 0;
for(int i = 0; i < 3; i++)
{
a[cur++] = i;
dfs(cur ,len);
cur--;
}
printf("%d\n",ans);
}
return 0;
}