在一串数字中添加符号使等式成立
自当时没有想出来看了网上的
#include <iostream>
#include <string.h>
#include <stdio.h>
#include <math.h>
using namespace std;
char save[20];
int cnt,flag[22],len,num[22];
void DFS(int id)
{
if(id==len-1)
{
int c=0,mid=0;
for(int i=0;i<len;i++)
{
if(flag[i]==1)
{
mid=mid*10+save[i]-'0';
num[c++]=mid;
mid=0;
}
else
mid=mid*10+save[i]-'0';
}
if(mid!=0)
num[c++]=mid;
for(int i=0;i<c;i++)
{
//printf("%d ",num[i]);
//cout<<endl;
int right=0,left=0;
for(int k=0;k<=i;k++)
right=right+num[k];
for(int k=i+1;k<c;k++)
left=left+num[k];
if(left==right)
cnt++;
}
return;
}
flag[id]=1;
DFS(id+1);
flag[id]=0;
DFS(id+1);
}
int main()
{
while(scanf("%s",save)&&save[0]!='E')
{
len=strlen(save);
memset(flag,0,sizeof(flag));
cnt=0;
DFS(0);
cout << cnt<<endl;
}
return 0;
}