题目描述

输入

输出

样例输入

样例输出

源代码
#include <stdio.h>
#include <string.h>
int main() {
int n, m, w[1000], weight, i, j, k;
while(scanf("%d%d", &m,&n)!=EOF)
{
memset(w, 0, sizeof(w));
w[0] = 1;
for (i = 0; i < n; i++) {
scanf("%d", &weight);
for (j = m; j >= 0; j--) {
if (w[j] == 0) continue;
w[j + weight] = 1;
}
}
if (w[m] == 1) {
printf("YES\n");
}
else {
printf("NO\n");
}}
}
关于这题





(第一次写,逻辑 思路 可能不是很清晰 , 有问题可以dd)
本文介绍了一个简单的背包问题,通过C++代码展示了如何使用动态规划方法求解。涉及输入数据的读取、状态转移方程及最终输出判断。适合初学者理解背包问题基本思路。

1240

被折叠的 条评论
为什么被折叠?



