开心的小明
来源:互联网 发布:js date gmt 编辑:程序博客网 时间:2024/04/29 09:30
小明要在规定金额内购买物品,要求物品的价格与重要度乘积的总和的最大值
#include"cstring" #include"stddef.h" /*功能:输入参数:int*p 指向二维数组的首地址,该二维数组第0行的两个数分别表示:总钱数<30000,和希望购买物品的个数<25; 该数组从第1行到第m行(1<=j<=m)中给出了编号为j的物品的基本数据,每行有2个非负整数, 表示该物品的价格(<=10000)和该物品的重要度(1~5)。 GetResult表示不超过总钱数的物品的价格与重要度乘积的总和的最大值(<100000000)。 不需做入参检查,测试用例可以保证~ 例如:4000 8(第0行) 821 3 (第1行) 422 5 458 5 500 3 200 2 430 4 530 3 239 3 则表示 总钱数为4000,希望购买物品个数为8个,因此从第1行到第8行表示编号为j的物品的价格及物品的重要度。 返回值:无*/void GetResult(int*p,int& Get_Result){ //在这里实现功能,用动态数组 Get_Result = 0; if (p==NULL) { return; } int totle_money = p[0]; //总钱数 int num = p[1]; //个数 int *pValues = new int[num]; int *pWeight = new int[num]; for (int i = 2, j = 0; i <= num*2; i += 2,j++) //将二维数组转换为以为数组,分别是价格和重要度 { pValues[j] = p[i]; pWeight[j] = p[i+1]; } int pp[30000]; //总钱数<30000,存放在该剩余钱处 的价值 memset(pp, 0, sizeof(pp)); int temp; for (int l = 0; l < num; l++) //物品个数 { for (int k = totle_money; k >= pValues[l]; k--) //余钱与价格的限制 { temp = pp[k-pValues[l]] + pValues[l]*pWeight[l]; if (temp > pp[k]) //比较购买后与不购买的情况 { pp[k] = temp; } } } Get_Result= pp[totle_money]; delete [] pValues; delete [] pWeight; return; }
0 0
- 开心的小明
- 开心的小明
- 开心的小明
- 开心的小明
- 开心的小明
- 开心的小明
- 开心的小明
- 开心的小明
- 开心的小明
- 开心的小明
- 开心的小明
- 开心的小明
- 开心的小明
- 开心的小明
- 开心的小明
- 开心的小明
- 开心的小明
- 开心的小明
- 实战演示黑客如何利用SQL注入漏洞攻破一个WordPress网站
- 关于编程在线
- banner图加速加载的方法
- TortoiseSVN 中访问错误
- JNI数据类型转换
- 开心的小明
- jsp的分页技术与访问数据库的汉字处理
- 2014,为了梦想,启航
- arcgis 10 扩展模块授权无效的解决方法
- ASP出现“不允许的父路径 ”的解决方法
- 实战Android手机客户端的家校通平台V1.0(SurfaceView实现统计图表)
- Struts1与Struts2的区别
- An error occurred on the server when processing the URL. 解决方法
- ASP.ENT中上一篇和下一篇