不知道为什么会超内存,第二个点接近125MB了,大佬能给我讲讲为什么会MLE吗
using namespace std;
int n,m;
int a[355];
int b[5];
int k;
int f[121][121][121][121];
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
cin>>a[i];
f[0][0][0][0]=a[1];
for(int i=1;i<=m;i++)
{
cin>>k;
b[k]++;
}
for(int i=0;i<=b[1];i++)
{
for(int j=0;j<=b[2];j++)
{
for(int p=0;p<=b[3];p++)
{
for(int q=0;q<=b[4];q++)
{
if(i)f[i][j][p][q]=max(f[i][j][p][q],f[i-1][j][p][q]+a[i*1+j*2+p*3+q*4+1]);
if(j)f[i][j][p][q]=max(f[i][j][p][q],f[i][j-1][p][q]+a[i*1+j*2+p*3+q*4+1]);
if(p)f[i][j][p][q]=max(f[i][j][p][q],f[i][j][p-1][q]+a[i*1+j*2+p*3+q*4+1]);
if(q)f[i][j][p][q]=max(f[i][j][p][q],f[i][j][p][q-1]+a[i*1+j*2+p*3+q*4+1]);
}
}
}
}
cout<<f[b[1]][b[2]][b[3]][b[4]]<<endl;
return 0;
}