题目描述
将自己的背包装满。由于物品较多,且每个物品都有自己的重量,而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的