• 【POJ


    牛保龄球

    直接中文了
    Descriptions
    奶牛打保龄球时不使用实际的保龄球。它们各自取一个数字(在0..99范围内),然后排成一个标准的保龄球状三角形,如下所示: 
              7
    3 8
    8 1 0
    2 7 4 4
    4 5 2 6 5
    然后其他奶牛从其尖端开始穿过三角形并“向下”移动到两个对角相邻的奶牛中的一个,直到到达“底部”行。奶牛的得分是沿途参观的奶牛数量的总和。得分最高的母牛赢得了那个框架。 

    给定具有N(1 <= N <= 350)行的三角形,确定可实现的最高可能总和。

    input

    第1行:单个整数,N 

    第2行...N + 1:行i + 1包含i个以空格分隔的整数,表示三角形的第i行。

    output

    第1行:使用遍历规则可实现的最大总和

    样本输入

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

    样本输出

    30

    Hint

              7
    *
    3 8
    *
    8 1 0
    *
    2 7 4 4
    *
    4 5 2 6 5
    如上所示,通过穿越奶牛可以实现最高分。
     
    题目链接
     
    杨辉三角形
    从下往上找,从两者选一个最大的去和上面的那个数相加,最后就能得出最大值
     
    AC代码
    #include <iostream>
    #include <cstdio>
    #include <fstream>
    #include <algorithm>
    #include <cmath>
    #include <deque>
    #include <vector>
    #include <queue>
    #include <string>
    #include <cstring>
    #include <map>
    #include <stack>
    #include <set>
    #include <sstream>
    #define IOS ios_base::sync_with_stdio(0); cin.tie(0);
    #define Mod 1000000007
    #define eps 1e-6
    #define ll long long
    #define INF 0x3f3f3f3f
    #define MEM(x,y) memset(x,y,sizeof(x))
    #define Maxn 350+5
    using namespace std;
    int main()
    {
        int n;
        int dp[Maxn][Maxn];//三角形
        cin>>n;
        for(int i=1; i<=n; i++)//输入
            for(int j=1; j<=i; j++)
                cin>>dp[i][j];
        for(int i=n-1; i>=1; i--)//从小往上找最优解
        {
            for(int j=1; j<=i; j++)
                dp[i][j]=max(dp[i+1][j],dp[i+1][j+1])+dp[i][j];
        }
        cout<<dp[1][1]<<endl;//输出
    }
  • 相关阅读:
    C语言-第32课
    typeof和clamp
    C语言void*和*p的使用
    C语言二级指针和一级指针
    C语言结构体变量成员之指针变量成员的坑
    控制硬件三部曲
    C语言const char*使用
    jiffies是什么
    TPO3-1 Architecture
    相关关系|相关系数|线性关系|
  • 原文地址:https://www.cnblogs.com/sky-stars/p/11332956.html
Copyright © 2020-2023  润新知