P1049 装箱问题
背包问题。模板题。标记每个可能的重量。
#include<stdio.h>
#include<stdlib.h>
#define size 100
int v[size], w[size], sum[30005];
void find(int n, int m) {
int i, j, k;
sum[0] = 1;
for (i = 0; i < m; i++) {
for (j = n; j >= v[i]; j--) {
if (sum[j - v[i]] == 1)
sum[j] = 1;
}
}
}
int main() {
int n, m, i, j, k;
scanf("%d%d", &n, &m);
for (i = 0; i < m; i++) {
scanf("%d", &v[i]);
}
find(n, m);
for (i = n; i > 0; i--) {
if (sum[i] == 1)break;
}
printf("%d", n - i);
return 0;
}