C语言循环体中循环的个数可不可以由一个变量来控制
我知道有递归那么个名词,可现在只会在函数定义里面用用,用的很浅我碰见一道题目,给定若干个互不相同的钱币面值,编程计算,最少需要多少个钱币才能凑成某个给出的钱数。
【样例输入】
15
6 2 5 10 20 50 100
【样例输出】
2
【样例输入】
1 2
【样例输出】
Impossible
小白不是来找答案的,是想请各位给个如题的思路
程序代码:#include <iostream>
using namespace std;
int f[2001],a[10],n,m;
int main()
{
while (cin>>m)
{
cin>>n;
for (int i=0; i<n; i++) cin>>a[i];
for (int i=0; i<=m; i++) f[i]=0;
for (int i=0; i<n; i++)
for (int j=a[i]; j<=m; j++)
if (f[j]==0 || f[j]>f[j-a[i]]+1) f[j]=f[j-a[i]]+1;
if (f[m]==0) cout<<"Impossible"<<endl; else cout<<f[m]<<endl;
}
}