HDOJ.2084 数塔(DP)
数塔
题意分析
DP的思想,自上而下计算。
[这几天比较忙 有空补上]
代码总览
/*
Title:HDOJ.2084
Author:pengwill
Date:2017-1-14
*/
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#define ma 101
using namespace std;
int map[ma][ma];
int dp[ma][ma];
void get(int n)
{
int i,j;
for(i = 0;i<n;i++){
for(j = 0; j<=i;j++){
if(!i&&!j){
dp[i][j] = map[i][j];
}else if(!j){
dp[i][j] = dp[i-1][j] + map[i][j];
}else if(j == i){
dp[i][j] = dp[i-1][j-1] + map[i][j];
}else{
dp[i][j] = max(dp[i-1][j] + map[i][j],dp[i-1][j-1] + map[i][j]);
}
}
}
}
int main()
{
int n,t;
scanf("%d",&t);
while(t--){
scanf("%d",&n);
int i,j;
for(i = 0;i<n;i++){
for(j = 0; j<=i;j++){
scanf("%d",&map[i][j]);
}
}
get(n);
int max = 0;
for(i = 0;i<n;i++){
if(max<dp[n-1][i]){
max = dp[n-1][i];
}
}
printf("%d\n",max);
}
return 0;
}