为什么一半RE一半红
样例也有错
#include<iostream>
#include<vector>
using namespace std;
int m,n;
vector<vector<short> >L;
vector<vector<short> >dp;
void findl(int i,int j)
{
if(i==0&&j==0)
return;
if(L[i][j]==L[i-1][j]+dp[i][j])
{
dp[i][j]=-1;
findl(i-1,j);
}
else
{
dp[i][j]=-1;
findl(i,j-1);
}
return;
}
int main()
{
cin>>m>>n;
L.resize(m);
for(int i=0,a;i<m;i++)
for(int j=0;j<n;j++)
{
cin>>a;
L[i].push_back(a);
}
dp=L;
for(int i=1;i<m;i++)
for(int j=1;j<n;j++)
{
L[i][j]+=max(L[i-1][j],L[i][j-1]);
}
findl(m-1,n-1);
for(int i=1;i<m;i++)
for(int j=1;j<n;j++)
{
dp[i][j]+=max(dp[i-1][j],dp[i][j-1]);
}
cout<<L[m-1][n-1]<<" "<<dp[m-1][n-1];
return 0;
}