問題描述
100元換零錢1元、2元、5元、10元、20元、50元有多少種組合方案?
解題思路
使用動態規劃來求解,使用表示用不超過第
個面值(從小到大排序)的零錢來表示
的所有組合方案數,則
程序實現
int main()
{
int val[7] = { 0,1,2,5,10,20,50 };
int f[101][7];
memset(f, 0, sizeof(f));
for (int j = 0; j <= 6; j++)
f[0][j] = 1;
for (int j = 1; j <= 6; j++)
{
for (int i = 1; i <= 100; i++)
{
if (i - val[j] < 0)
f[i][j] = f[i][j - 1];
else
f[i][j] = f[i - val[j]][j] + f[i][j - 1];
}
}
cout << f[100][6] << endl;
system("pause");
return 0;
}