acwing 1018 最低通行费 (数字三角形模型)

题面

在这里插入图片描述

题解

  1. 线性DP数字三角形模型,题中说最多2n-1个时间,就说明只能是向右和向下到达右下角,不能往回走,摘花生是让求最大,这个是让求最小,求最小我们就要初始化边界

在这里插入图片描述

代码

#include<bits/stdc++.h>

using namespace std;
const int N = 110;
const int INF = 0x3f3f3f3f;

int n;
int w[N][N];
int f[N][N];

int main() {
    
    

    cin >> n;
    for (int i = 1; i <= n; i++) {
    
    
        for (int j = 1; j <= n; j++) {
    
    
            cin >> w[i][j];
        }
    }


    for (int i = 1; i <= n; i++) {
    
    
        for (int j = 1; j <= n; j++) {
    
    
            //特判左上角
            if (i == 1 && j == 1) f[i][j] = w[i][j];
            else {
    
    
                f[i][j]=INF;
                if (i > 1) f[i][j] = min(f[i][j], f[i - 1][j] + w[i][j]);
                if (j > 1) f[i][j] = min(f[i][j], f[i][j - 1] + w[i][j]);
            }
        }
    }

    cout << f[n][n] << endl;
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_44791484/article/details/115082215