突然不理解这道题了。。写错写不出来。。

#include <stdio.h>

int main(int argc, char *argv[]) {
  //  dp[i] 表示i容量时所能装的最大物品体积
  int dp[20001] = {0};
  int object[30] = {0};
  
  int size, count;
  scanf("%d", &size);
  scanf("%d", &count);
  
  for (int i = 0; i < count; ++i) {
    scanf("%d", &object[i]);
  }
  
//   for (int i = 1; i <= size; ++i) {
//     for (int j = 0; j < count; ++j) {
//       if (object[j] <= i) {
//         dp[i] = dp[i - object[j]] + object[j] > dp[i] ? dp[i - object[j]] + object[j] : dp[i];
//       }
//     }
//   }
  
  for (int i = 0; i < count; ++i) {
    for (int j = size; j >= object[i]; --j) {
      dp[j] = dp[j - object[i]] + object[i] > dp[j] ? dp[j - object[i]] + object[i] : dp[j];
    }
  }
  
  printf("%d\n", size - dp[size]);
  
  return 0;
}