您的位置:首页 > 其它

poj 1163 The Triangle

2012-03-25 15:15 316 查看
简单的动态规划,重点是怎样才算是好的实现。

# include <stdio.h>

# define MAXN 100

short int a[MAXN][MAXN];

int main()
{
int n, i, j;

scanf("%d", &n);

for (i = 0; i < n; ++i)
for (j = 0; j <= i; ++j)
scanf("%d", &a[i][j]);

for (i = n-1; i > 0; --i)
for (j = 0; j <= i; ++j)
a[i-1][j] += (a[i][j]>a[i][j+1] ? a[i][j]:a[i][j+1]);

printf("%d\n", a[0][0]);

return 0;
}


节省内存的做法:

# include <stdio.h>

short int a[100];

int main()
{
int n, i, j, t, k, max, u;

scanf("%d", &n);

for (i = 0; i < n; ++i)
for (t = j = 0; j <= i; ++j)
{
u = a[j];
scanf("%d", &k);
a[j] = k + (t>a[j] ? t:a[j]);
t = u;
}

max = a[0];
for (i = 0; i < n; ++i)
if (a[i] > max) max = a[i];

printf("%d\n", max);

return 0;
}


/* */
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: