蓝桥杯 ALGO-124 算法训练 数字三角形 的两种算法
2015-11-30 22:25
543 查看
算法训练 数字三角形
时间限制:1.0s 内存限制:256.0MB
问题描述
(图3.1-1)示出了一个数字三角形。 请编一个程序计算从顶至底的某处的一条路
径,使该路径所经过的数字的总和最大。
●每一步可沿左斜线向下或右斜线向下走;
●1<三角形行数≤100;
●三角形中的数字为整数0,1,…99;
.
(图3.1-1)
输入格式
文件中首先读到的是三角形的行数。
接下来描述整个三角形
输出格式
最大总和(整数)
样例输入
5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
样例输出
30
递归方法:简单易懂,但容易超时
第二种方法:用时短。
时间限制:1.0s 内存限制:256.0MB
问题描述
(图3.1-1)示出了一个数字三角形。 请编一个程序计算从顶至底的某处的一条路
径,使该路径所经过的数字的总和最大。
●每一步可沿左斜线向下或右斜线向下走;
●1<三角形行数≤100;
●三角形中的数字为整数0,1,…99;
.
(图3.1-1)
输入格式
文件中首先读到的是三角形的行数。
接下来描述整个三角形
输出格式
最大总和(整数)
样例输入
5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
样例输出
30
递归方法:简单易懂,但容易超时
#include<iostream> #include<cstdlib> #define abs(a) (((a)>0)?(a):(-(a))) using namespace std; int getmax ( int **( &) , int , int , int limit ); int main ( void ) { int n; //行数 cin >> n; int **tri; tri = new int* [ n ]; for ( int i = 0; i < n; i++ ) { *( tri + i ) = new int [ i + 1 ]; } for ( int i = 0; i < n; i++ ) { for ( int j = 0; j <= i; j++ ) cin >> tri [ i ][ j ]; } cout << getmax ( tri , 0 , 0 , n ) << endl; system ( "pause" ); return 0; } int getmax ( int **&tri , int m , int n , int limit ) { int sum = tri [ m ][ n ]; int l , r; if ( m < limit - 1 && n<limit - 1 ) { l = sum + getmax ( tri , m + 1 , n , limit ); r = sum + getmax ( tri , m + 1 , n + 1 , limit ); } else { l = sum; r = sum; } if ( l > r ) { return l; } else if ( l < r ) { return r; } }
第二种方法:用时短。
#include<iostream> #include<cstdlib> using namespace std; int main ( void ) { int n; //行数 cin >> n; int **tri; tri = new int* [ n ]; for ( int i = 0; i < n; i++ ) { *( tri + i ) = new int [ i + 1 ]; } for ( int i = 0; i < n; i++ ) { for ( int j = 0; j <= i; j++ ) cin >> tri [ i ][ j ]; } for ( int i = n - 1; i > 0; i-- ) { for ( int j = 0; j<i ; j++ ) { if ( tri [ i ][ j ]>tri [ i ][ j + 1 ] ) { tri [ i - 1 ][ j ] += tri [ i ][ j ]; } else { tri [ i - 1 ][ j ] += tri [ i ][ j + 1 ]; } } } cout << tri [ 0 ][ 0 ] << endl; system ( "pause" ); return 0; }
相关文章推荐
- Windows 平台安装配置Golang语言环境
- Django第一次接触
- pedagogical
- 【django】搭建博客教程(4)——超级简单实现滚动回到页面顶端按钮
- 让Category支持添加属性与成员变量【转载】
- <18> go time
- googletest 学习笔记
- Django学习记录之Django 1.8 教程(我只是官网的搬运工)Tutorial Part 2
- Gof-23种设计模式名称列表
- Django学习记录之Django 1.8 教程(我只是官网的搬运工)Tutorial Part 1
- Mongo数据迁移-单个collection的迁移
- Mongo解决注册码到期的问题
- Google Tensorflow 源码编译(三):tensorflow<v0.5.0>
- 解决启动mongod 时,出现addr already in use错误
- FMDB&EGODatabase(数据持久化)
- django1.6.11配置静态文件
- Golang学习摘录(二)
- 民意调查Django实现(二)
- django数据源操作(多数据源,导入导出等)
- Go-简洁的并发