(华为OJ)C 语言—购物单(背包问题和动态规划)

该博客探讨了一道华为在线评测平台(OJ)上的编程题,涉及C语言编程和动态规划算法。通过将问题转化为背包问题,博主分享了如何利用动态规划求解在有限预算下能获得最大价值商品的策略。代码中详细注释了解题思路。
摘要由CSDN通过智能技术生成

题目要求:
在这里插入图片描述
解题思路:
本题和背包问题类似,再利用动态规划算法,计算再n钱时能购买的最大价值的物品,n值一直涨到最大值,求 出最大价值(详见代码备注)

代码如下:

/************************************************************************
*      文件名:Buylist
*      文件功能描述:购物单
*      文件作者名:Mr_han QQ:785937095
*      说明:
*       1、每个主件可以有 0 个、 1 个或 2 个附件。附件不再有从属于自己的附件
*       2、每件物品规定了一个重要度,分为 5 等:用整数 1 ~ 5 表示,第 5 等最重要
*       3、在不超过 N 元(可以等于 N 元)的前提下,使每件物品的价格与重要度的乘积的总和最大
**************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>

#define LONG long
#define CHAR char
#define MAX_N 3000
#define MAX_M 10

LONG Knapsack ( LONG v[], LONG w[], LONG pro[], LONG N, LONG m)
{
    L
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值