求助 20分
查看原帖
求助 20分
952033
lutaoquan2012楼主2023/5/29 20:42
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n,m,a[2010][2010],dp[2010][2010],ans=0x3f3f3f3f;
int main(){
	cin>>m>>n;
	memset(dp,0x3f,sizeof(dp));
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++) cin>>a[i][j];
	for(int i=1;i<=n;i++) dp[i][1]=a[i][1];
	for(int i=1;i<=n;i++){
		for(int j=2;j<=m;j++){
			if(i==1)
				dp[i][j]=min(dp[i+1][j-1],dp[i][j-1])+a[i][j];
			else if(i==n)
				dp[i][j]=min(dp[i-1][j-1],dp[i][j-1])+a[i][j];
			else
				dp[i][j]=min(dp[i+1][j-1],min(dp[i][j-1],dp[i-1][j-1]))+a[i][j];
		}
	}
	for(int i=1;i<=n;i++) ans=min(ans,dp[i][m]);
	cout<<ans;
	return 0;
}
2023/5/29 20:42
加载中...