• POJ 1163 The Triangle


    题意:一个数字组成的三角形,像酱:

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

    从最上面的顶点开始,每次可以移动到下一层左右两个点上,选一条路径,走过的点上的值加和最大,输出最大值。

    解法:经典动态规划问题……数字三角形……

    每个点可以由上一层相邻的两个点的值转移而来,方程:dp[i][j] = num[i][j] + max(dp[i - 1][j - 1], dp[i - 1][j]),也可以反过来考虑,每个点由下一层相邻的两个点转移而来,代码采用第一种思想。

    代码:

    #include<stdio.h>
    #include<iostream>
    #include<algorithm>
    #include<string>
    #include<string.h>
    #include<math.h>
    #include<limits.h>
    #include<time.h>
    #include<stdlib.h>
    #include<map>
    #include<queue>
    #include<set>
    #include<stack>
    #include<vector>
    #define LL long long
    using namespace std;
    int num[105][105];
    int main()
    {
        int n;
        while(~scanf("%d", &n))
        {
            memset(num, 0, sizeof num);
            for(int i = 1; i <= n; i++)
                for(int j = 1; j <= i; j++)
                    scanf("%d", &num[i][j]);
            int ans = 0;
            for(int i = 2; i <= n; i++)
                for(int j = 1; j <= i; j++)
                    num[i][j] += max(num[i - 1][j - 1], num[i - 1][j]);
            for(int i = 1; i <= n; i++)
                ans = max(ans, num[n][i]);
            cout << ans << endl;
        }
        return 0;
    }
    

      

  • 相关阅读:
    CSS命名法
    CSS伪类
    CSS总结
    CSS应用给网页元素的几种方式总结
    CSS语法小记
    细谈WEB标准
    Spark 个人实战系列(1)--Spark 集群安装
    HBase 实战(1)--HBase的数据导入方式
    shell 脚本实战笔记(9)--linux自动批量添加用户
    shell 脚本实战笔记(8)--ssh免密码输入执行命令
  • 原文地址:https://www.cnblogs.com/Apro/p/4433191.html
Copyright © 2020-2023  润新知