Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Example program
- #include <iostream>
- #include <string>
- using namespace std;
- int main(){
- int n = 79;
- const int k = 4;
- int a[k] = {1,2, 5, 20};
- const int INF=1000000000; // Значение константы }бесконечность}
- int F[n+1];
- F[0]=0;
- int m, i;
- for(m=1; m<=n; ++m) // заполняем массив F
- { // m - сумма, которую нужно выдать
- F[m]=INF; // помечаем, что сумму m выдать нельзя
- for(i=0; i<k; ++i) // перебираем все номиналы банкнот
- {
- if(m>=a[i] && F[m-a[i]]+1<F[m])
- F[m] = F[m-a[i]]+1; // изменяем значение F[m], если нашли
- } // лучший способ выдать сумму m
- }
- if (F[n]==INF)
- cout<<"Требуемую сумму выдать невозможно"<<endl;
- else
- while(n>0)
- for(i=0;i<k;++i)
- if (F[n-a[i]]==F[n]-1)
- {
- cout<<a[i]<<" ";
- n-=a[i];
- break;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement