C++ 代码
#include<bits/stdc++.h>
using namespace std;
const int N = 110;
int n , m;
int f[N][N];
int main(){
cin>>n;
memset(f,0x3f,sizeof f);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++) cin>>f[i][j];
f[0][1] = f[1][0] = 0;// 最小初始化为正无穷,边界特判,对f[1][1] 左上进行特殊处理即可
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++) {
f[i][j] += min(f[i-1][j] , f[i][j-1] ); // f[i][j] 的更新需要 以i,j的拓扑序来进行
}
cout<<f[n][n]<<endl;
}