样例AC但提交0分,部分数据输出负无穷。
#include<bits/stdc++.h>
using namespace std;
const int F=105;
const int V=105;
int f,v,ans,dp[F][V],a[F][V],p[F][V],t[F];
int main()
{
scanf("%d%d",&f,&v);
for(int i=1;i<=f;i++)
{
for(int j=1;j<=v;j++)
{
scanf("%d",&a[i][j]);
}
}
memset(dp,-127,sizeof(dp));
for(int i=0;i<=v;i++) dp[0][i]=0;
for(int i=1;i<=f;i++)
{
for(int j=i;j<=v;j++)
{
if(dp[i-1][j-1]+a[i][j]>dp[i-1][j])
{
dp[i][j]=dp[i-1][j-1]+a[i][j];
p[i][j]=j;
}
else
{
dp[i][j]=dp[i][j-1];
p[i][j]=p[i][j-1];
}
}
}
t[f+1]=v+1;
for(int i=f;i>=1;i--)
{
t[i]=p[i][t[i+1]-1];
}
printf("%d\n",dp[f][v]);
for(int i=1;i<=f;i++) printf("%d ",t[i]);
return 0;
}