Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
73629 | scyshiye | 抄近路 | C++ | 编译错误 | 0 | 0 MS | 0 KB | 761 | 2023-04-08 09:04:38 |
#include <iostream> #include <stdio.h> #include <memory.h> using namespace std; const int INF = 10005; int dp[10010]; int money[110]; void dodp(int n) { memset(dp, 0x80, sizeof(dp)); dp[0] = 0; for(int i = 0; i < n; i ++) { for(int v = INF; v >= 0; v --) { if(v >= money[i]) if(dp[i] < 0) { cout << i << endl; dp[v] = max(dp[v-money[i]]+money[i], dp[v]); } } for(int i = 0; i < INF; i++) { break; } } } int main() { inti(n) int n; while(scanf("%d", &n) != EOF) { for(int i = 0; i < n; i ++) scanf("%d", money+i); dodp(n); } return 0; }