fork download
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4. int result = 0;
  5. void count2(int k, std::vector<int> d, int total, int temp, bool flag, unsigned short int pos, std::vector<std::string> s){
  6. //std::cout << temp << " ";
  7. if(pos==(d.size())){
  8. total+=temp;
  9. if(total==k){
  10. result++;
  11. for(unsigned short int i=0;i<d.size();i++){
  12. std::cout << s[i] << d[i];
  13. }
  14. std::cout << "=" << k <<"\n";
  15. }
  16. return;
  17. }
  18. s[pos]="+";
  19. count2(k,d,total+temp,+d[pos],true,pos+1,s);
  20. //put a - sign in pos
  21. s[pos]="-";
  22. count2(k,d,total+temp,-d[pos],false,pos+1,s);
  23. if(pos==0) return;
  24. //Append digit
  25. if(flag==true){
  26. s[pos]="";
  27. //std::cout << "<0 " << 10*temp-d[pos] << " ";
  28. count2(k,d,total,(10*temp-d[pos]),true,pos+1,s);
  29. }
  30. else{
  31. s[pos]="";
  32. //std::cout << ">0" << 10*temp+d[pos] << " ";
  33. count2(k,d,total,10*temp+d[pos],false,pos+1,s);
  34. }
  35.  
  36. }
  37. int main() {
  38. vector<int> a={1,2,3,3,3};
  39. vector<string> s;
  40. s.resize(a.size());
  41. // your code goes here
  42. count2(6,a,0,0,true,0,s);
  43. cout << result;
  44. return 0;
  45. }
Success #stdin #stdout 0s 3480KB
stdin
Standard input is empty
stdout
+1+2+3+3-3=6
+1+2+3-3+3=6
+1+2-3+3+3=6
-1-2+3+3+3=6
4