将dfs层次分为三层
进行深搜
#include <bits/stdc++.h>
#define ll long long
using namespace std;
char s[100];
ll n;
int len, ans;
void dfs(ll sum, ll num, int pos, int op){
if (pos == len){
if (n == sum + num * op) ans++;
return;
}
dfs(sum, num * 10 + s[pos] - '0', pos + 1, op); //无符号
dfs(sum + num * op, s[pos] - '0', pos + 1, 1); //加号
dfs(sum + num * op, s[pos] - '0', pos + 1, -1); //减号
}
int main(){
while (cin >> s >> n){
ans = 0;
len = strlen(s);
dfs(0, s[0] - '0', 1, 1);
cout << ans << endl;
}
return 0;
}