您的位置:首页 > 其它

HDU 2084 数塔(基础dp)

2017-05-03 11:49 295 查看
这题是一个基础动态规划,入门题目,思路很简单,就是从下往上找一条最优路径即可,转移公式也很简单,就是挑最大的情况进行存储。

这里博主使用了最基础的二维数组来处理这题,其实这题还可以用一维滚动数组来优化空间,但是鉴于二维数组比较好理解,所以这里我就使用了二维数组处理。

#include<stdio.h>

int a[110][110];

int max(int a, int b)
{
if (a > b)
return a;
return b;
}

int main()
{
int n, m;
scanf("%d", &n);
while (n)
{
scanf("%d", &m);
int i, j;
for (i = 0;i < m;i++)
{
for (j = 0;j <= i;j++)
{
scanf("%d", &a[i][j]);
}
}
for (i = m - 1;i >= 0;i--)
{
for (j = 0;j <= i;j++)
{
a[i][j] += max(a[i + 1][j], a[i + 1][j + 1]);
}
}
printf("%d\n", a[0][0]);
n--;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  dp ACM