2020-12-13:C语言整数拆分问题【Mary的问题-背包问题】

题目描述
将自己的背包装满。由于物品较多,且每个物品都有自己的重量,而Alice的背包只能承受固定的重量,她很烦恼如何才能装满自己的包包,所以现在交给你来将Mary的背包装满吧。

注意:每种物品只能选一次,不考虑包的空间大小。

解答要求
时间限制:1000ms, 内存限制:64MB
输入
输入第一行包含两个空格分开的整数N(1≤ N ≤ 100)和S(1≤ S ≤ 1000),现场有N个物品和Mary的背包最多只能装S千克的物品;第二行是N个正整数Wi(0 < Wi ≤ 100),表示每个物品的重量(单位千克)。

输出
若能将Mary的背包装满则输出“YES”,否则输出“NO”。

样例

输入样例 1

7 15
1 4 3 4 5 2 7
输出样例 1

YES

result

#include <stdio.h>
#define MAX 1001

/**
二维数组的方式计算可能性;

逻辑:
1.数组对应的下标标识货物重量
2.数组各个位置对应的值 标识对应下标值的货物总重是否可以实现,0-不能被组合实现,1-可以实现

1. 读入可选择货物重量清单个数,及总容量S
2. 依次读入各个货物重量
3. 按照下标点亮原则进行匹配,(下标对应的值为1,即证明可以通过当前的输入值,构成和为S的情况)
	1). 如果当前只有下标0值为1;读入数据为1,那么下标0保持为1, 下标1被置为1;
	2). 当前存在下标0 和下标1的
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值