感觉推导的也没啥问题啊,不知道为什么错了。
#include <bits/stdc++.h>
using namespace std;
#define f(i,a,b) for(int i=a;i<=b;i++)
#define g(i,a,b) for(int i=a;i>=b;i--)
int m,n,minn=1e6;
int a[2001][2001];
int dp[2001][2001];
int main(){
cin>>n>>m;
f(i,0,m-1) {
f(j,0,n-1) {
cin>>a[i][j];
}
}
f(i,0,m-1) dp[i][0]=a[i][0];
f(j,1,n-1) {
f(i,0,m-1) {
int pre;
pre=i-1;
if(pre<0) pre+=m;
dp[i][j]=min(dp[i][j-1],dp[pre][j-1])+a[i][j];
}
}
f(i,0,m-1) {
minn=min(minn,dp[i][n-1]);
}
cout<<minn;
return 0;
}
求大神帮忙看看,调了半天,头都晕了,
这题我是从第2列往第n-1列推,还是一定是按行来推的啊。