• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
T Y
博客园    首页    新随笔    联系   管理    订阅  订阅

The Triangle


Description

7 
3 8
8 1 0
2 7 4 4
4 5 2 6 5
(Figure 1)
Figure 1 shows a number triangle. Write a program that calculates the highest sum of numbers passed on a route that starts at the top and ends somewhere on the base. Each step can go either diagonally down to the left or diagonally down to the right. 

Input

Your program is to read from standard input. The first line contains one integer N: the number of rows in the triangle. The following N lines describe the data of the triangle. The number of rows in the triangle is > 1 but <= 100. The numbers in the triangle, all integers, are between 0 and 99.

Output

Your program is to write to standard output. The highest sum is written as an integer.
//最基本的dp,数塔:
#include
<iostream> using namespace std; int num[105][105]; int dp(int num[105][105],int n) {
for(int i = n ; i >= 1; i--) { for(int j = 1; j <= i-1; j++) { if(num[i][j] > num[i][j+1]) num[i-1][j] += num[i][j]; else num[i-1][j] += num[i][j+1]; } } return num[1][1]; } int main() { int n; while( cin>> n) { for(int i = 1; i <= n;i++) { for(int j = 1; j <= i;j++) { cin>>num[i][j]; } } cout<<dp(num,n)<<endl; } return 0; }
posted @ 2013-07-30 10:04  T天天T  阅读(228)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3