IlidanBabyRage

bank.cpp

Jun 15th, 2015
224
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.80 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. const int MAX_INT = ~(1 << (sizeof(int) * 8 - 1));
  6.  
  7. int main(){
  8.  
  9.     int n, sum;
  10.     cin >> n;
  11.     int value[100];
  12.     for (int i = 0; i < n; i++){
  13.         cin >> value[i];
  14.     }
  15.     cin >> sum;
  16.     int *count = new int[sum + 1];
  17.     count[0] = 0;
  18.  
  19.     for (int i = 1; i <= sum; i++){
  20.         count[i] = MAX_INT;
  21.         for (int j = 0; j < n; j++){
  22.             if (i >= value[j])
  23.                 if (count[i] > count[i - value[j]] + 1)
  24.                     count[i] = count[i - value[j]] + 1;
  25.         }
  26.     }
  27.     if (count[sum] == MAX_INT)
  28.         cout << "No solution";
  29.     else{
  30.         while (sum > 0){
  31.             for (int i = 0; i < n; i++){
  32.                 if (sum >= value[i] && count[sum - value[i]] == (count[sum] - 1)){
  33.                     cout << value[i] << " ";
  34.                     sum -= value[i];
  35.                     break;
  36.                 }
  37.             }
  38.         }
  39.     }
  40.     cout << endl;
  41.  
  42.     delete [] count;
  43.  
  44.     return 0;
  45. }
Add Comment
Please, Sign In to add comment