C语言背包问题

C语言背包问题0/1背包问题一个旅行者有一个最多能装MM公斤的背包,现在有nn件物品,它们的重量分别是W1,W2,…,WnW1,W2,…,Wn,它们的价值分别为C1,C2,…,CnC1,C2,…,Cn,求旅行者能获得最大总价值。【输入】第一行:两个整数,MM(背包容量,M<=200M<=200)和NN(物品数量,N<=30N<=30);第2..N+12..N+1行:每行二个整数Wi,CiWi,Ci,表示每个物品的重量和价值。【输出】仅一行…

大家好,又见面了,我是你们的朋友全栈君。

0/1背包问题

一个旅行者有一个最多能装 MM 公斤的背包,现在有 nn 件物品,它们的重量分别是W1,W2,…,WnW1,W2,…,Wn,它们的价值分别为C1,C2,…,CnC1,C2,…,Cn,求旅行者能获得最大总价值。

【输入】

第一行:两个整数,MM(背包容量,M<=200M<=200)和NN(物品数量,N<=30N<=30);

第2..N+12..N+1行:每行二个整数Wi,CiWi,Ci,表示每个物品的重量和价值。

【输出】

仅一行,一个数,表示最大总价值。

【输入样例】

10 4
2 1
3 3
4 5
7 9

【输出样例】

12
#include<stdio.h>
int dp[200];
int w[50], v[50];
int max(int a, int b)
{
	if (a > b)
		return a;
	else
		return b;
}
int main()
{
	int m, n;
	scanf("%d%d", &m, &n);
	for (int i = 1; i <= n; i++)
	{
		scanf("%d%d", &w[i], &v[i]);
	}
	for (int i = 1; i <= n; i++)
	{
		for (int j = m; j >= 1; j--)//必须要逆序
		{
			if (w[i] <= j)
			{
				dp[j] = max(dp[j], dp[j - w[i]] + v[i]);
			}
		}
	}
	printf("%d", dp[m]);
	return 0;
}

完全背包问题

题目描述】

设有nn种物品,每种物品有一个重量及一个价值。但每种物品的数量是无限的,同时有一个背包,最大载重量为MM,今从nn种物品中选取若干件(同一种物品可以多次选取),使其重量的和小于等于MM,而价值的和为最大。

【输入】

第一行:两个整数,MM(背包容量,M≤200M≤200)和NN(物品数量,N≤30N≤30);

第2..N+12..N+1行:每行二个整数Wi,CiWi,Ci,表示每个物品的重量和价值。

【输出】

仅一行,一个数,表示最大总价值。

【输入样例】

10 4
2 1
3 3
4 5
7 9

【输出样例】

max=12
#include<stdio.h>
int dp[200];
int w[50], v[50];
int max(int a, int b)
{
	if (a > b)
		return a;
	else
		return b;
}
int main()
{
	int m, n;
	scanf("%d%d", &m, &n);
	for (int i = 1; i <= n; i++)
	{
		scanf("%d%d", &w[i], &v[i]);
	}
	for (int i = 1; i <= n; i++)
	{
		for (int j = w[i]; j <= m; j++)
		{
			dp[j] = max(dp[j], dp[j - w[i]] + v[i]);
		}
	}
	printf("max=%d", dp[m]);
	return 0;
}

多重背包问题

【题目描述】

为了庆贺班级在校运动会上取得全校第一名成绩,班主任决定开一场庆功会,为此拨款购买奖品犒劳运动员。期望拨款金额能购买最大价值的奖品,可以补充他们的精力和体力。

【输入】

第一行二个数n(n≤500)n(n≤500),m(m≤6000)m(m≤6000),其中nn代表希望购买的奖品的种数,mm表示拨款金额。

接下来nn行,每行33个数,vv、ww、ss,分别表示第I种奖品的价格、价值(价格与价值是不同的概念)和能购买的最大数量(买00件到ss件均可),其中v≤100v≤100,w≤1000w≤1000,s≤10s≤10。

【输出】

一行:一个数,表示此次购买能获得的最大的价值(注意!不是价格)。

【输入样例】

5 1000
80 20 4
40 50 9
30 50 7
40 30 6
20 20 1

【输出样例】

1040
复制代码到粘帖板
#include<stdio.h>
int dp[6100], v[510], w[510], s[510];
int max(int a, int b)
{
	if (a > b)
		return a;
	else
		return b;
}
int main()
{
	int m, n;
	scanf("%d%d", &m, &n);
	for (int i = 1; i <= m; i++)
	{
		scanf("%d%d%d", &w[i], &v[i], &s[i]);
	}
	for (int i = 1; i <= m; i++)
	{
		for (int j = n; j >= 1; j--)
		{
			for (int k = 0; k <= s[i] && k * w[i] <= j; k++)
			{
				dp[j] = max(dp[j], dp[j - k * w[i]] + k * v[i]);
			}
		}
	}
	printf("%d", dp[n]);
	return 0;
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/159093.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月14日 下午1:00
下一篇 2022年7月14日 下午1:00


相关推荐

  • 线程join方法用处「建议收藏」

    线程join方法用处「建议收藏」参考博客:https://www.cnblogs.com/lcplcpjava/p/6896904.html第一种情况(不使用join):ThreadJoinTestt1=newThreadJoinTest(“小明”);ThreadJoinTestt2=newThreadJoinTest(“小东”);t1.start();

    2022年5月24日
    42
  • 分布式锁的应用场景和三种实现方式的区别_负载均衡策略

    分布式锁的应用场景和三种实现方式的区别_负载均衡策略多线程对同一资源的竞争,需要用到锁,例如Java自带的Synchronized、ReentrantLock。但只能用于单机系统中,如果涉及到分布式环境(多机器)的资源竞争,则需要分布式锁。分布式锁的主要作用:保证数据的正确性:比如:秒杀的时候防止商品超卖,表单重复提交,接口幂等性。避免重复处理数据:比如:调度任务在多台机器重复执行,缓存过期所有请求都去加载数据库。分布式锁的主要特性:互斥:同一时刻只能有一个线程获得锁。可重入:当一个线程获取锁后,还可以再次获取这个锁,避免死锁发生。高可用:当

    2025年10月5日
    5
  • Laravel 5 如何实现网站在维护模式下允许指定 IP 用户访问(白名单)

    Laravel 5 如何实现网站在维护模式下允许指定 IP 用户访问(白名单)

    2021年11月4日
    40
  • 悄悄大撤退,Manus带走了哪些秘密?

    悄悄大撤退,Manus带走了哪些秘密?

    2026年3月15日
    3
  • 菲尼克斯FL SWITCH SFN 16TX多端口交换机

    菲尼克斯FL SWITCH SFN 16TX多端口交换机菲尼克斯FLSWITCHSFN16TX多端口交换机2891933可提供标准温度(0°C…60°C)和宽温(-40°C…75°C)型号的设备窄型金属壳体上有16个端口,带冗余输入电压自适应与自交叉检测简化了安装和设置电缆安全锁定备选本地诊断指示,带LEDRJ45端口的传输速率为10/100Mbps,光纤端口的传输速率为100Mbps尺寸宽度70mm高度135mm深度110mm环境条件保护等级IP20环境温度(运行)0°C…60°C环境温度(

    2022年6月22日
    30
  • HTML5视频直播技术介绍

    HTML5视频直播技术介绍视频直播如火如荼,为了满足比较火热的移动Web端直播需求,一系列的HTML5直播技术迅速的发展了起来。只要实现了视频直播的各个技术难点,通过HTML5进行视频直播并非难事。常见的可用于HTML5的直播技术共有3种协议:HLS、WebSocket与WebRTC。本文将对基于这3种协议的HTML5直播技术实现做下基础的介绍。一.HLS优点:CDN支持比较好缺点

    2022年7月21日
    21

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号