边界不优化,min的时候取到0
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int inf = 0x3f3f3f3f;
int a[110][110], dp[110][110];
int main()
{
int n;
cin >> n;
memset(dp, 0x3f, sizeof dp);
for(int i = 1; i <= n; i++)
for(int j = 1; j <= n; j++) cin >> a[i][j];
dp[1][1] = a[1][1];
for(int i = 0; i <= n; i++) dp[0][i] = dp[i][0] = inf;
for(int i = 1; i <= n; i++)
for(int j = 1; j <= n; j++)
{
if(i==1 and j==1) continue;
dp[i][j] = a[i][j] + min(dp[i-1][j], dp[i][j-1]);
}
cout << dp[n][n];
return 0;
}