思路:
LeetCode62
此处的状态转移方程为:
dp[ i ][ j ] = grid[ i ][ j ] + min ( dp[ i-1 ][ j ] , dp[ i ][ j-1] ) |
---|
完整代码:
#include <iostream>
#include<algorithm>
using namespace std;
#define maxn 300
int m,n;
int a[maxn][maxn],dp[maxn][maxn];
int dpf(int m,int n)
{
int i,j;
//初始值
dp[0][0]=a[0][0];
for(i=1;i<m;i++)
dp[i][0]=dp[i-1][0]+a[i][0];
for(j=1;j<n;j++)
dp[0][j]=dp[0][j-1]+a[0][j];
for(i=1;i<m;i++)
{
for(j=1;j<n;j++)
{
dp[i][j]=a[i][j]+min(dp[i][j-1],dp[i-1][j]);
}
}
return dp[m-1][n-1];
}
int main()
{
cin>>m>>n;
int i,j;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
cin>>a[i][j];
int ans;
ans=dpf(m,n);
cout << ans << endl;
return 0;
}