关闭

2016SDAU课程练习三1006

64人阅读 评论(0) 收藏 举报
分类:
1.题目编号:1006
2.简单题意:DP算法,数塔问题
3.解题思路形成:采用动态规划自底向上计算,如果我们要知道所走之和最大,那么最后一步肯定是走最后一排数其中一个,向上退,
4.感想:递推,,,喜欢公式,,然后直接输出1

5.AC代码:

#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;


int a[105][105],dp[105][105];


int main()
{
    int t,n,i,j;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d",&n);
        memset(dp,0,sizeof(dp));
        for(i = 1;i<=n;i++)
        {
            for(j = 1;j<=i;j++)
            scanf("%d",&a[i][j]);
        }
        for(i = n;i>=1;i--)
        {
            for(j = 1;j<=i;j++)
            {
                dp[i][j] = max(dp[i+1][j],dp[i+1][j+1])+a[i][j];
            }
        }
        printf("%d\n",dp[1][1]);
    }


    return 0;
}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:2049次
    • 积分:300
    • 等级:
    • 排名:千里之外
    • 原创:29篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条