numtri解题报告 —— icedream61 博客园(转载请注明出处)
------------------------------------------------------------------------------------------------------------------------------------------------
【题目】
  有一个数字的金字塔,形状如下
        7
       3 8
      8 1 0
     2 7 4 4
    4 5 2 6 5
  要从顶端开始走,每次只能向左下或者右下走,求所经过的数字之和最大值。
【数据范围】
  1<=R<=1000
  0<=每个数<=100
【输入样例】
  5
  7
  3 8
  8 1 0
  2 7 4 4
  4 5 2 6 5
【输出样例】
  30
------------------------------------------------------------------------------------------------------------------------------------------------
【分析】
  DP。
  设num[i][j]为i行j列的数,d[i][j]是从1行1列走到i行j列的当前最优解。
    d[1][1]=num[1][1];
    d[i][j]=0; // i>1 or j>1
  从1行1列走到R行某列的最大值,可以直接递归出来,状态转移方程如下:
    当i==1,j>=2时,d[i][j]=d[i-1][j]+num[i][j];
    当i>=2,j>=2时,d[i][j]=max{d[i-1][j]+num[i][j],d[i-1][j-1]+num[i][j]};
  但本题,递归有边界情况,比较麻烦,递推更方便,状态转移方程如下:
    当i>=2,2<=j<R时
      d[i+1][j]=max{d[i+1][j],d[i][j]+num[i+1][j]};
      d[i+1][j+1]=max{d[i+1][j+1],d[i][j]+num[i+1][j+1]};
  最终,只要扫过d[R][1~R]取得最大值输出即可。
------------------------------------------------------------------------------------------------------------------------------------------------
【总结】
  一遍AC。

------------------------------------------------------------------------------------------------------------------------------------------------

【代码】

 /*
ID: icedrea1
PROB: numtri
LANG: C++
*/ #include <iostream>
#include <fstream>
using namespace std; int R;
int num[][],d[][]; void change(int &r,int x) { if(x>r) r=x; } int main()
{
ifstream in("numtri.in");
ofstream out("numtri.out"); in>>R;
for(int i=;i<=R;++i)
for(int j=;j<=i;++j) in>>num[i][j]; d[][]=num[][];
for(int i=;i<R;++i)
for(int j=;j<=i;++j)
{
change(d[i+][j],d[i][j]+num[i+][j]);
change(d[i+][j+],d[i][j]+num[i+][j+]);
} int maxSum=;
for(int j=;j<=R;++j) change(maxSum,d[R][j]);
out<<maxSum<<endl; in.close();
out.close();
return ;
}

USACO Section1.5 Number Triangles 解题报告的更多相关文章

  1. USACO Section1.5 Prime Palindromes 解题报告

    pprime解题报告 —— icedream61 博客园(转载请注明出处)--------------------------------------------------------------- ...

  2. USACO Section1.5 Superprime Rib 解题报告

    sprime解题报告 —— icedream61 博客园(转载请注明出处)--------------------------------------------------------------- ...

  3. USACO Section1.4 Arithmetic Progressions 解题报告

    ariprog解题报告 —— icedream61 博客园(转载请注明出处)-------------------------------------------------------------- ...

  4. USACO Section1.3 Combination Lock 解题报告

    combo解题报告 —— icedream61 博客园(转载请注明出处)---------------------------------------------------------------- ...

  5. USACO Section1.3 Prime Cryptarithm 解题报告

    crypt1解题报告 —— icedream61 博客园(转载请注明出处)--------------------------------------------------------------- ...

  6. USACO Section1.3 Barn Repair 解题报告

    barn1解题报告 —— icedream61 博客园(转载请注明出处)---------------------------------------------------------------- ...

  7. USACO Section1.3 Mixing Milk 解题报告

    milk解题报告 —— icedream61 博客园(转载请注明出处)----------------------------------------------------------------- ...

  8. USACO Section1.2 Palindromic Squares 解题报告

    palsquare解题报告 —— icedream61 博客园(转载请注明出处)------------------------------------------------------------ ...

  9. USACO Section1.2 Dual Palindromes 解题报告

    dualpal解题报告 —— icedream61 博客园(转载请注明出处)-------------------------------------------------------------- ...

随机推荐

  1. April 25 2017 Week 17 Tuesday

    Have you ever known the theory of chocie? There are a bunch of axiems, but there are only two thing ...

  2. java集合框架——工具类

    一.概述 JAVA集合框架中有两个很重要的工具类,一个是Collections,另一个是Arrays.分别封装了对集合的操作方法和对数组的操作方法,这些操作方法使得程序员的开发更加高效. public ...

  3. MySQL数据库实验三:连接查询

    实验三    连接查询 实验名称:连接查询(2课时) 一.实验目的 理解JOIN语句的操作和基本使用方法,掌握内连接.外连接.自身连接的概念和使用. 二.实验环境 是MS SQL SERVER 200 ...

  4. 【转载】#370 - Subscribe to an Event by Adding an Event Handle

    You subscribe to a particular event in C# by defining an event handler-code that will be called when ...

  5. chapter1-printf.py

    #!/usr/bin/env python # _*_ coding:utf-8 _*_ from ctypes import * libc = CDLL("libc.so.6") ...

  6. JT796、JT1077部标平台检测报名须知

    检测报名须知 申请道路运输车辆卫星定位系统平台标准符合性检测时,请先将1检测意向单(只针对企业监控平台).2符合性检测申请材料(基本材料包括:申请函.授权人身份证复印件.检测登记表.运输企业信息表.平 ...

  7. iOS之旅--隐藏(去除)导航栏底部横线

    iOS之旅--隐藏(去除)导航栏底部横线 iOS开发大部分情况下会使用到导航栏,由于我司的app导航栏需要与下面紧挨着的窗口颜色一致,导航栏底部的横线就会影响这个美观,LZ使用了以下方法.觉得不错,分 ...

  8. Oracle中文乱码解决

    查看当前Oracle字符集 select userenv('language') from dual; USERENV('LANGUAGE') ---------------------------- ...

  9. 在网页标题上加个logo

    只需在title标签上加个link标签即可 <link rel="icon" href="images/icon.png" > <title& ...

  10. js表格打印自动分页demo

    本文翻译自:How Does setState Know What to Do? 原作者:Dan Abramov 如果有任何版权问题,请联系shuirong1997@icloud.com 当你在组件中 ...