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; } }