Я читал, что жадный алгоритм заботится только об оптимальном решении, которое пытается достичь в данный момент, но является ли это единственным критерием, который я должен учитывать, если я хочу создать жадный алгоритм? Также, как я могу знать, создал ли я жадный алгоритм или нет? Я имею в виду, я создал следующий код для проблемы изменения в C++
:
#include <iostream>
using namespace std;
int greedyChange(int coinSet[], int lenCoinSet, int money){
int change = 0;
static int i = 0;
if(i >= lenCoinSet){
return 0;
}
while(money - coinSet[i] >= 0){
change++;
money -= coinSet[i];
}
i++;
return change + greedyChange(coinSet, lenCoinSet, money);
}
int main(int argc, char const *argv[]){
int coinSet[]={20, 15, 10, 5, 1};
int lenCoinSet = sizeof(coinSet)/sizeof(coinSet[0]);
int money = 30;
cout << "The minimun number of coins to get your change is: "
<< greedyChange(coinSet, lenCoinSet, money)<<endl;
return 0;
}
И я думаю, что это жадный, но я не уверен. Я был бы признателен, если бы вы могли объяснить мне, является ли написанный мной код жадным или нет. Кроме того, если это не так, есть ли у вас другое возможное решение, которым вы могли бы поделиться или, может быть, какие-нибудь советы по улучшению этого кода? Наконец, если есть документация, которую вы могли бы мне порекомендовать, я буду очень благодарен.