例题:

假如有 2 块,3 块,7 块面额的纸币,如何使用最小的纸币数量来凑成 100 块。  答案:15

动态规划方程:

十分钟学会动态规划(简单的)

 前十项表格:

 十分钟学会动态规划(简单的)

相信你们看完这俩张图就有一点懂了,数组c存的是最少钱数,i代表钱,数组value代表钱的种类,就像堆积木一样,打好地基,后面的直接调用就行了,下面源码也简单,仅供参考。测试用的没删,但是运行出来很直观。

 

#include"iostream"
using namespace std;
void guib(int c[101],int a[3]){

	for(int q=2;q<=100;q++){
		int xx=1000;
		for(int w=0;w<3;w++){
			c[q]=c[q-a[w]]+1;
			cout<<"c["<<q<<" "<<w<<"]="<<c[q]<<endl;
			if(xx>c[q]){
				xx=c[q];
				cout<<"...."<<xx<<endl;
			}	
		}
		c[q]=xx;
	}
	cout<<c[100];
}
int main(){
	int z[3]={2,3,7};
	int x[101]={0};
	guib(x,z);
	return 0;
}

 

相关文章:

  • 2022-02-07
  • 2021-10-28
  • 2021-09-20
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-07-29
  • 2021-07-14
猜你喜欢
  • 2022-12-23
  • 2022-01-14
  • 2022-12-23
  • 2021-08-17
  • 2021-12-09
  • 2021-11-11
  • 2022-01-12
相关资源
相似解决方案