杭电2084 数塔

第一次提交的时候,有一个小的毛病,就是在第二个for循环中没有再定义i,后来百度才知道

这个错误是因为在当前for循环里面直接定义了i,i的作用范围就只在这一个for循环里面,如果在下一个for循环里面之间用i,就会报错

下面是更改后的代码

#include<stdio.h>
int max(int a,int b)
{
    if(a>=b)
        return a;
        else
           return b;
}

int main()

{

    int t,num,k,a[105][105];

    scanf("%d",&t);

    while(t--)

    {

        int sum=0;

        scanf("%d",&num);

        k=num;

            for(int i=1;i<=k;i++)

            {   for(int j=1;j<=i;j++)

            scanf("%d",&a[i][j]);}

        for(int i=k-1;i>=1;i--)

        {
            for( int j=1;j<=i;j++)
             a[i][j]+=max(a[i+1][j],a[i+1][j+1]);//从倒数第二行开始,前一行从其相邻的后一行中选择最大的值累加

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

}

  

 

posted @ 2014-11-01 06:48  sequenceaa  阅读(218)  评论(0编辑  收藏  举报