大家帮忙看下 错在哪
goldfisher为了解救被绑架的未婚妻而来到了恶魔岛。上岛前,一个神秘的印度人yingnan告诉他恶魔岛处处布满陷阱,只有沿着地上标记数字和为最大的路径才能找到公主。为此他给goldfisher画了一个草图,假使地上标记的数字如下:1
2 3
.1 5 9
9 1 1 1
其中的最大路径是1-3-9-1,最大的和是14,只有沿着这条路径走,才能找到公主。goldfisher犯难了,因为现实中标记的数字更多,难度更大。你能帮助goldfisher找到正确的道路解救他的未婚妻吗?
注:地图为等腰三角形,必须置顶向下,且每次仅能访问相邻两个子路径。本例中:
第一层 1 可达 2、3 两点
第二层 2 可达 1、5 两点 ; 3 可达 5、9 两点,以此类推
输入:
本题包含多组测试数据,其中第一行为N(1 <= N <= 100),表示将要进过的关卡数。
接下来N行为通往目的地图。
通过判断End Of File结束程序
我的思想是从下向上累加,为什么出错?
#include<stdio.h>
#include<math.h>
#include<malloc.h>
int main()
{int *p;
int l,j ,k,n,h;
while(scanf("%d",&n)!=EOF)
{ k=0;
p=(int*)malloc((n+1)*n/2*sizeof(int));
for(l=0;l<n;l++)
for(j=0;j<=l;j++)
scanf("%d",&p[k++]);
for(;n>=2;n--)
{for(h=(n-1)(n-2)/2;h<n(n-1)/2;h++)
{p[h]=p[h+n]>p[h+(n-1)]?(p[h]+p[h+n]):(p[h]+p[h+(n-1)]);
}
}
printf("It will take him %d steps!\n",p[0]);
}
return 0;
}
请大家指点下 多谢了 我刚刚自学
运行出错