#include <bits/stdc++.h>
using namespace std;
int t, m;
int value[101];
int times[101];
int zhi[1234][1234];
int dfs(int pt, int i)
{// i是当前位置,pt是剩余时间
if (zhi[i][pt] != -1) { return zhi[i][pt]; }
if (i == m) { return zhi[i][pt] = 0; }
int jia, bujia=0xffffff;
bujia = dfs(pt, i + 1);
if (pt - times[i] >= 0) { jia = dfs(pt - times[i], i + 1) + value[i]; }
return zhi[i][pt] = max(jia, bujia);
}
int main()
{
memset(zhi, -1, sizeof(zhi));
cin >> t >> m;
for (int i = 0; i < m; i++) { cin >> times[i] >> value[i]; }
cout << dfs(t, 0);
return 0;
}
我在自己电脑上测试没问题啊,数组也不太会是爆掉的样子?难道是dfs里面那两个int的问题么?