2016SDAU课程练习三1006
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;
}

阅读更多
个人分类: 2016SDAU课程练习三
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

2016SDAU课程练习三1006

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭