#include<iostream>#include<cstdio>
using namespace std;constint N =1010;int n, a[N][N], f[N];intmain(){
cin >> n;for(int i =1; i <= n; i ++){
for(int j =1; j <= i; j ++){
cin >> a[i][j];}}for(int i = n; i >=1; i --){
for(int j =1; j <= i; j ++){
f[j]=max(f[j], f[j+1])+ a[i][j];}}
cout << f[1];return0;}
1284 摘花生
#include<iostream>#include<cstring>
using namespace std;constint N =105;int a[N][N], f[N];intmain(){
int t;
cin >> t;while(t --){
int r, c;
cin >> r >> c;for(int i =1; i <= r; i ++){
for(int j =1; j <= c; j ++){
cin >> a[i][j];}}memset(f,0,sizeof(f));for(int i =1; i <= r; i ++){
for(int j =1; j <= c; j ++){
f[j]=max(f[j], f[j-1])+ a[i][j];}}
cout << f[c]<< endl;}return0;}
1287 最低通行费
#include<iostream>#include<cstring>
using namespace std;constint N =105;int a[N][N], f[N];intmain(){
int n;
cin >> n;for(int i =1; i <= n; i ++){
for(int j =1; j <= n; j ++){
cin >> a[i][j];}}for(int i =1; i <= n; i ++){
for(int j =1; j <= n; j ++){
if(i ==1) f[j]= f[j-1]+ a[i][j];elseif(j ==1) f[j]= f[j]+ a[i][j];else f[j]=min(f[j], f[j-1])+ a[i][j];}}
cout << f[n]<< endl;return0;}
1261 城市交通路网
#include<cstdio>#include<iostream>#include<cstring>
using namespace std;constint N =1e3+10;int n, x, e[N][N], next[N];intmain(){
cin >> n;memset(e,0x3f,sizeof(e));for(int i =1; i <= n; i ++){
for(int j =1; j <= n; j ++){
cin >> x;if(x) e[i][j]= x;}}for(int i = n-1; i >=1