码迷,mamicode.com
首页 > 其他好文 > 详细

数字三角形系列

时间:2016-08-12 15:04:07      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:




P1044 数字三角形
时间: 1000ms / 空间: 131072KiB / Java类名: Main

背景

09年 USACO 11月月赛  铜牌第一道

描述

示出了一个数字三角形。 请编一个程序计算从顶至底的某处的一条路
径,使该路径所经过的数字的总和最大。
  每一步可沿左斜线向下或右斜线向下走;
  1<三角形行数<25;
  三角形中的数字为整数<1000;


输入格式

第一行为N,表示有N行
后面N行表示三角形每条路的路径权

输出格式

路径所经过的数字的总和最大的答案

测试样例1

输入



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

输出

30

备注

搜索80分,记忆化搜索AC

 
 
  记忆化搜索,从后往前访问。对于每一个点正常往下走时有两种不同走法,于是从上往下走时只需逆推即可。所以对于a[i][j]而言,只需加上a[i+1][j]与a[i+1][j+1]中的最大值。不断循环最后得到最大值为a[1][1]。
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 using namespace std;
 6 int a[30][30],n;
 7 int main()
 8 {
 9     cin>>n;
10     for(int i=1;i<=n;i++)for(int j=1;j<=i;j++)scanf("%d",&a[i][j]);
11     for(int i=n-1;i>=0;i--)
12     {
13         for(int j=1;j<=i;j++)
14         { 
15               a[i][j]+=max(a[i+1][j+1],a[i+1][j]); 
16         }
17     }
18     cout<<a[1][1]<<endl;
19     return 0;
20 }

 

 

P1076 数字三角形2
时间: 1000ms / 空间: 131072KiB / Java类名: Main

描述

数字三角形
要求走到最后mod 100最大

输入格式

第1行n,表示n行 <=25
第2到n+1行为每个的权值

输出格式

mod 100最大值

测试样例1

输入



99 98

输出

99

 
 
  这题tyvj的数据非常诡异,想骗分的朋友输出99会发现自己奇妙的得了90分。

数字三角形系列

标签:

原文地址:http://www.cnblogs.com/gc812/p/5764663.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!