这是一题简单的动态规划。
我是从下往上推的,也可以从上往下推。
方程
dp[i][j] = a[i][j] +max{ d[i+1][j],d[i+1][j+1] }
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
FILE *fin = freopen("1.txt","r",stdin);
int kase,n;
string line;
cin>>kase;
while(kase--){
int a[101][101];
int dp[101][101];
cin>>n;
for(int i =1;i<=n;i++){
for(int j =1;j<=i;j++)
cin>>a[i][j];
}
for(int j = 1;j<=n;j++) dp[n][j] = a[n][j];
for(int i = n-1;i>=1;i--){
for( int j =1;j<=i;j++){
dp[i][j] =a[i][j]+ max(dp[i+1][j],dp[i+1][j+1]);
}
}
cout<<dp[1][1]<<endl;
}//while
}