#include<bits/stdc++.h>
using namespace std;
int a[400],b[150],dp[150][400];
int main(){
int n,m,i,j,q;
scanf("%d%d",&n,&m);
for(i = 1;i <= n;i ++){
scanf("%d",&a[i]);
}
for(i = 1;i <= m;i ++){
scanf("%d",&b[i]);
}
dp[0][1] = a[1];
for(i = 1;i <= m;i ++){
for(j = 1;j <= n;j ++){
for(q = 1; q <= m;q ++){
dp[i][j] = max(dp[i][j],dp[i-1][j-b[q]]+a[j]);
}
}
}
printf("%d",dp[m][n]);
return 0;
}
这个思路可不可以,为啥只能得部分分