当前位置: 首页 > news >正文

数塔-动态规划-ccf

 1 #include<iostream>
 2 using namespace std;
 3 
 4 int main(){
 5     int n;//数塔层数 
 6     cin>>n;
 7 if(n>0){
 8     float a[n][n],c[n][n];//a,c记录数组
 9     //输入数组 
10     for(int i=0;i<n;i++){
11         for(int j=0;j<=i;j++){
12             cin>>a[i][j];
13             c[i][j]=a[i][j];
14         }
15     }
16     //b记录每层数字所加上的下一层数字对应的列数 
17     int b[n-1][n-1];
18     //对a进行从下到上的层加,同时用b记录 
19     for(int i=n-1;i>0;i--){
20         for(int j=0;j<i;j++){
21             if(a[i][j]<a[i][j+1]){
22                 b[i-1][j]=j+1;
23                 a[i-1][j]+=a[i][j+1];
24             }
25             else{
26                 b[i-1][j]=j;
27                 a[i-1][j]+=a[i][j];
28             }
29         }
30     }
31     //输出 
32     cout<<a[0][0]<<endl;
33     cout<<c[0][0];
34     int j=0; 
35     for(int i=0;i<n-1;i++){
36                 j=b[i][j];
37                 cout<<' '<<c[i+1][j];
38             }
39 }
40     
41     return 0;
42 }
shuta.code

 

题目:

给定一个数塔,如下图所示。在此数塔中,从顶部出发,在每一节点可以选择走左下或右下,一直走到底层。请找出一条路径,使路径上的数值和最大。

    

9

    
   

12

 

15

   
  

10

 

6

 

8

  
 

2

 

18

 

9

 

5

 

19

 

7

 

10

 

4

 

16

【输入形式】

输入时第一行一个整数n,表示该数塔的行数,其余n行表示该塔每行的数值

【样例输入】

5
9
12 15
10 6 8
2 18 9 5
19 7 10 4 16

【输出形式】

输出包含两行,第一行为最大路径上的数值之和, 第二行n个数字为从上而下最大路径数值

【样例输出】

59
9 12 10 18 10

解题思路:
    

9

    
   

12

 

15

   
  

10

 

6

 

8

  
 

2

 

18

 

9

 

5

 

19

 

7

 

10

 

4

 

16

自下而上判断,从最后一行(第n行)开始,
n-1行每个数字加上所对应n行的数中最大的数,
循环这一步骤直至第n=1,得到所求最大和









代码实现:
见评论

注意:
1、输入的合法性分析
2、数塔中数据类型
3、数塔中重复数字的处理

转载于:https://www.cnblogs.com/Gru-blog/p/9226272.html

相关文章:

  • 【Matplotlib】利用Python进行绘图
  • 单体架构风格
  • CSS outline和border区别
  • python学习之老男孩python全栈第九期_day009之文件操作总结
  • 复杂性研究相关论文
  • 我与Linux系统的藕断丝连
  • 老板让我十分钟上手nx-admin
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • Flutter Android端启动白屏
  • 九、一级缓存、二级缓存
  • zabbix监控
  • centos7 go ENV 部署
  • swift leetcode-29 Divide Two Integers
  • 后端程序员必备的Linux基础知识
  • Linux服务器后台运行jar包
  • Akka系列(七):Actor持久化之Akka persistence
  • angular2 简述
  • canvas 高仿 Apple Watch 表盘
  • css布局,左右固定中间自适应实现
  • Hibernate【inverse和cascade属性】知识要点
  • HTML-表单
  • isset在php5.6-和php7.0+的一些差异
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • Objective-C 中关联引用的概念
  • PAT A1017 优先队列
  • Python - 闭包Closure
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • SpingCloudBus整合RabbitMQ
  • uva 10370 Above Average
  • 闭包--闭包之tab栏切换(四)
  • 从零开始学习部署
  • 基于axios的vue插件,让http请求更简单
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 聊聊directory traversal attack
  • 前端性能优化——回流与重绘
  • 使用parted解决大于2T的磁盘分区
  • 探索 JS 中的模块化
  • 第二十章:异步和文件I/O.(二十三)
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • 新年再起“裁员潮”,“钢铁侠”马斯克要一举裁掉SpaceX 600余名员工 ...
  • ​批处理文件中的errorlevel用法
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (编译到47%失败)to be deleted
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (图)IntelliTrace Tools 跟踪云端程序
  • (一)Neo4j下载安装以及初次使用
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .NET 材料检测系统崩溃分析
  • .NET 使用配置文件
  • .sh文件怎么运行_创建优化的Go镜像文件以及踩过的坑
  • @Autowired标签与 @Resource标签 的区别