#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std ;
const int N=2010,INF=0x3f3f3f3f ;
int n,m ;
int dp[N][N] ;
int a[N][N] ;
int main()
{
scanf("%d%d",&n,&m) ;
for(int i=1;i<=m;i++)
{
for(int j=1;j<=n;j++)
{
cin>>a[i][j] ;
}
}
memset(dp,0,sizeof(dp)) ;
for(int j=1;j<=n;j++)
{
for(int i=1;i<=m;i++)
{
if(i!=m) dp[i][j]=min(dp[i][j-1],dp[i-1][j-1])+a[i][j] ;
else dp[i][j]=min(dp[i][j-1],dp[1][j-1])+a[i][j] ;
}
}
int ans=INF ;
for(int i=1;i<=m;i++)
{
ans=min(ans,dp[i][n]) ;
}
cout<<ans<<endl ;
return 0 ;
}
转移方程正确 但是满江红……
弱弱求助大佬们 感谢