所以,我创建了一个硬币更改算法,采用值N和任何数量的面额,如果它没有1,我必须自动包括1。我已经这样做了,但现在有一个缺陷,我有2个矩阵,我需要使用其中的1个。是否有可能重写S [i]矩阵,并且仍然增加数组的大小......另外,我怎样才能找到最大面额和第二高和sooo直到最小?我应该把它从高到低排列,以便让它变得更容易,或者有更简单的方法来一个接一个地寻找它们吗?贪婪算法硬币更换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年,[里拉硬币](https://en.wikipedia.org/wiki/Coins_of_the_Italian_lira)正在使用,即使有的话,仍然有1个里拉硬币仍在流通。 –
是的,但我们不想要这里的情况33我们不能得到它,因为没有1,所以这是必要的 – Darkflame
如果用户输入无意义的输入,你应该告诉他们。你无法知道错误是否输入了33个金币或者不包括1个硬币。无论是否需要,您都要加1。 –