1、简单描述
一个n*n的正方形方格,在规定时间内穿过,需要的最少通行费是多少。
2、思路
#include <bits/stdc++.h>
using namespace std;
const int INF = 2147483647 ;
int N;
int node[101][100],money[101][101] ;
int main()
{
cin>>N;
for(int i=1;i<=N;i++)
for(int j=1;j<=N;j++)
cin>>node[i][j];
for(int i=0;i<=N+1;++i)
{
node[i][0]=INF;
node[0][i]=INF;
money[i][0]=INF;
money[0][i]=INF;}
for(int i=1;i<=N;i++)
for(int j=1;j<=N;++j)
{
if(i==1&&j==1) continue;
money[i][j]+=min(money[i-1][j],money[i][j-1])+node[i][j] ;
}
cout<<money[N][N]+node[1][1];
return 0;
}
倒序推出通行费最少的情况,每次只能向下走或者向右走。