したがって、値Nと任意の金額を取るコイン変更アルゴリズムを作成しています.1を持たない場合は、自動的に1を含める必要があります。私はすでにこれをしましたが、欠陥があります。私は2つのマトリックスを持っています。私はそれらの1つを使用する必要があります。 S [i]行列を書き直しても、配列の大きさを増やすことは可能ですか?また、最小金額まで、最大金額と2番目に高い金額を見つける方法はありますか?私はそれを簡単にするために最高から最低に並べ替えるべきですか、それを次々に探し出す簡単な方法がありますか?貨幣交換の欲張りアルゴリズムC++
int main()
{
int N,coin;
bool hasOne;
cout << "Enter the value N to produce: " << endl;
cin >> N;
cout << "Enter number of different coins: " << endl;
cin >> coin;
int *S = new int[coin];
cout << "Enter the denominations to use with a space after it" << endl;
cout << "(1 will be added if necessary): " << endl;
for(int i = 0; i < coin; i++)
{
cin >> S[i];
if(S[i] == 1)
{
hasOne = true;
}
cout << S[i] << " ";
}
cout << endl;
if(!hasOne)
{
int *newS = new int[coin];
for(int i = 0; i < coin; i++)
{
newS[i] = S[i];
newS[coin-1] = 1;
cout << newS[i] << " ";
}
cout << endl;
cout << "1 has been included" << endl;
}
//system("PAUSE");
return 0;
}
。私はなぜあなたが "必要な"場合1を追加するのか分からない - 1の値を持つコインを持っていない通貨はどうですか?たとえば、1950年から2000年にかけて、[Lira coins](https://en.wikipedia.org/wiki/Coins_of_the_Italian_lira)が流通中に残っているリラコアはほとんどありませんでした。 –
yeaしかし、私たちはここでは状況33を望んでいません。何もないので、必要ではありません。 – Darkflame
ユーザーが意味を持たない入力を入力すると、それらを伝える必要があります。あなたは、間違いが金額に33を入力したか、コインのセットに1を含まないかを知る方法がありません。あなたはそれが必要かどうか1を加えています。 –