• 17 数字三角形 初入dp


    Description

    7 
    3 8 
    8 1 0 
    2 7 4 4 
    4 5 2 6 5
    给出了一个数字三角形。从三角形的顶部到底部有很多条不同的路径。对于每条路径,把路径上面的数加起来可以得到一个和,你的任务就是找到最大的和。 
    注意:路径上的每一步只能从一个数走到下一层上和它最近的左边的那个数或者右边的那个数。

    Input

    输入数据有多组,每组输入的是一行是一个整数N (1 < N <= 100),给出三角形的行数。下面的N行给出数字三角形。数字三角形上的数的范围都在0和100之间。

    Output

    输出最大的和。

    Sample Input

    5
    7
    3 8
    8 1 0 
    2 7 4 4
    4 5 2 6 5
    3
    1
    2 3
    1 1 1

    Sample Output

    30
    5

     1 #include<iostream>
     2 using namespace std;
     3 int main()
     4 {
     5     int data[200][200];//定义数组
     6     int n,tmp;
     7     while(cin>>n)
     8     {
     9         n=n+1;//这是个问题不明白为啥
    10         for(int i=0;i<n;i++)
    11         {
    12             for(int j=0;j<i;j++)
    13             cin>>data[i][j];
    14         }
    15         for(int i=0;i<n;i++)
    16         {
    17             for(int j=0;j<i;j++)
    18             {
    19                 if(j==0)//判断边界问题
    20                 data[i][j]=data[i-1][j]+data[i][j];
    21                 else
    22                 data[i][j]=max(data[i-1][j],data[i-1][j-1])+data[i][j];//由上往下推出结果
    23             }
    24         }
    25         tmp=0;
    26         for(int j=0;j<n;j++)//找出最大值
    27         if(tmp<data[n-1][j])
    28         tmp=data[n-1][j];
    29         cout<<tmp<<endl;
    30     }
    31     return 0;
    32 }
    View Code

    第一道dp问题,这个题的思路就是,由上到下依次存起来

    高手的这个问题   http://blog.csdn.net/lalor/article/details/6954923

  • 相关阅读:
    Java static 关键字 静态初始化块
    一致性哈希
    Java函数传递方式值传递
    Scala 小练习
    Scala 推荐递归编程
    白话 Scala 控制抽象
    函数柯里化(curry)
    Scala 闭包 closure
    Scala 参数(类型)推断
    xcode配置文件中,Architectures表示的意义
  • 原文地址:https://www.cnblogs.com/wang-ya-wei/p/5375098.html
Copyright © 2020-2023  润新知