![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<string.h> 4 #include<math.h> 5 #include<ctype.h> 6 7 int len; 8 long n,num; 9 char s[15]; 10 void DFS(int t,long ans) 11 { 12 int i; 13 if(t == len) 14 { 15 if(ans == n) 16 num++; 17 return ; 18 } 19 else 20 { 21 long k = 0L; 22 for(i= t; i<len; i++) 23 { 24 k = k*10+(s[i]-'0'); 25 DFS(i+1,ans+k); 26 if(t != 0) DFS(i+1,ans-k); 27 } 28 } 29 } 30 31 int main() 32 { 33 while(scanf("%s",s) != EOF) 34 { 35 len = strlen(s); 36 scanf("%lld",&n); 37 num = 0L; 38 DFS(0,0L); 39 printf("%ld\n",num); 40 } 41 //system("pause"); 42 return 0; 43 } 44