杭电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]);
    }

}

  

时间: 2024-10-17 20:16:23

杭电2084 数塔的相关文章

杭电2084数塔

这是自己敲出的代码,现在还输不出结果,记录下来,待修改. #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; while(num

杭电ACM2092--整数解

杭电ACM2092--整数解    分析 http://acm.hdu.edu.cn/showproblem.php?pid=2092 一个YES,一个Yes.试了10几次..我也是无语了..哪里都不错的.... 很简单,用2次求根公式求出其中一个的值,然后判断是否为整数    if (x == int(x) ). 或者  用最直接的方法,从-m到m挨个算.有意结果时停止. 源码: #include <stdio.h> #include <math.h> int main() {

HDU 2084 数塔 --- 入门DP

HDU 2084 数塔 从下往上递推,状态转移方程 dp[i][j] = max( dp[i+1][j], dp[i+1][j+1]) + a[i][j]; /* HDU 2084 数塔 --- 入门DP */ #include <cstdio> const int N = 105; int dp[N][N]; int MAX(int a, int b){ return a > b ? a : b; } int main() { #ifdef _LOCAL freopen("D

hdu 2084 数塔 (简单dp)

http://acm.hdu.edu.cn/showproblem.php?pid=2084 数塔 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 28668    Accepted Submission(s): 17230 Problem Description 在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的: 有如下

HDU 2084 数塔(DP初步应用)

HDU  2084  数塔 在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的: 有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少? 已经告诉你了,这是个DP的题目,你能AC吗? Input 输入数据首先包括一个整数C,表示测试实例的个数,每个测试实例的第一行是一个整数N(1 <= N <= 100),表示数塔的高度,接下来用N行数字表示数塔,其中第i行有个i个整数,且所有的整数均在区间[0,99]内. Output 对于每个测试

hdu 2084 数塔 dp 动态规划

开始动态规划的学习了,先是比较基础的,很金典的数塔.附上题目链接  http://acm.hdu.edu.cn/showproblem.php?pid=2084 这题的状态转移方程是  dp[i][j] = max(dp[i-1][j-1],dp[i-1][j]) + m[i][j]; (dp[i][j] 表示在第 i 层 第 j 列时的最大和) . 然后一个双重循环,边能算出.当然可以用滚动数组.但是注意用滚动数组解题时,第二层循环 j 必须从大到小, 因为 状态转移方程 为  f  [ j

数塔(杭电2084)

数塔 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 22445    Accepted Submission(s): 13522 Problem Description 在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的: 有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少

ACM 杭电HDU 2084 数塔 [解题报告]

数塔 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 36261    Accepted Submission(s): 21659 Problem Description 在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的: 有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少?

杭电(hdu)ACM 2084 数塔

数塔 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 27978    Accepted Submission(s): 16819 Problem Description 在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的: 有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少