样例都没过的菜鸡,求看
#include<iostream>
#include<algorithm>
using namespace std;
int m, n, i, j;
int f[500][500],a[500],b[500];
int h[505];
int dfs(int l,int sum,int k,int p)
{
if (p > 1)return 0;
if (k == n)return sum;
if (l > m)return 0;
if (k > n)return 0;
if (f[l][k])return f[l][k];
int ans = -1 * 0x3f3f3f;
for (int i = 1;i <= n;i++)
{
ans = max(ans, dfs(l + b[i], sum + a[l],k+1,++h[i]));
cout << l << " " << sum << endl;
}
f[l][k] = ans;
return ans;
}
int main()
{
cin >> m >> n;
memset(f, 0, sizeof(f));
memset(h, 0, sizeof(h));
for (int i = 1;i <= m;i++)
cin >> a[i];
for (int j = 1;j <=n ;j++)
cin >> b[j];
cout<<dfs(1,a[1], 1,1);
}