1006-F专题三

来源:互联网 发布:sqlserver订阅发布 编辑:程序博客网 时间:2024/05/17 05:18

1.题号:1006-F

2.题意:从顶层走到底层,每一步只能走到相邻的结点,求经过的结点的数字之和最大是多少?

3.思路:输入数据首先包括一个整数t,表示测试实例的个数,每个测试实例的第一行是一个整数n(1 <= n <= 100),表示数塔的高度,接下来用n行数字表示数塔,其中第i行有个i个整数,且所有的整数均在区间[0,99]内。首先输入数塔数据,二维数组,然后从倒数第二行开始进行递归,直到第一行得到最大的数。

4.感想:这道题相比比较简单,只是简单的一次递归。

#include<iostream>#include<cstdio>#define max(a,b) a>b?a:bint dp[1001][1001];using namespace std;int main(){    int i,j;    int t;    int n;    cin>>t;    while(t--)    {       cin>>n;       for(i=0;i<n;i++)         for(j=0;j<=i;j++)            cin>>dp[i][j];       for(i=n-1;i>=0;i--)          for(j=0;j<=i;j++)              dp[i][j]+=max(dp[i+1][j+1],dp[i+1][j]);          cout<<dp[0][0]<<endl;     }     return 0;}



0 0
原创粉丝点击