题意:在一组数中添加加号或减号使结果等于指定的数。
#include<bits/stdc++.h>
using namespace std;
long long n, ans, len;
char s[20];
void dfs(long long x, long long sum){ //第x位 当前和sum
if(x == len){
if(sum == n)
ans++;
return;
}
long long k = 0;
for(int i = x; i < len; i++){
k = k*10 + s[i] -'0';
dfs(i+1, sum+k);
if(x)
dfs(i+1, sum-k);
}
}
int main(){
while(scanf("%s %lld", s, &n) != EOF){
ans = 0;
len = strlen(s);
dfs(0, 0);
cout << ans << endl;
}
return 0;
}