数字三角形是一个由非负数组成的三角形,第n行有n个数,形如:

1

2 3

4  5 6

除最下行之外,每一行的左下和右下各有一个数,从第一行开始,向下,左或者右走一格,直到走到最后一行,所经过的路径上的数的和最大

除了简单的递归运算:

int d(int i,int j){return a[i][j]+(i==n?0:d(i+1,j)>?d(i+1,j+1));
}

以及递推运算:

int i,j;
for(j=1;j<=n;j++)d[n][j]=a[n][j];
for(i=n-1;i>=1;i--)
for(j=1;j<=i;j++){d[i][j]=a[i][j]+d[i+1][j]>?d[i+1][j+1];
}

还可以用记忆化搜索的方法,减少计算量,记忆化搜索的方法定义一个数组d,d初始化值全部为-1,然后再编写递归函数,如果发现d[i][j]的值已经被计算过了,就直接返回:

 1 #include "stdio.h"
 2 #include "memory.h"
 3 int d[100][100];
 4 int a[100][100];
 5 int n;
 6 int b(int i,int j){
 7     if (d[i][j]>=0) return d[i][j];
 8     if (i!=n)
 9     {
10         int temp=b(i+1,j)>b(i+1,j+1)?b(i+1,j):b(i+1,j+1);
11         d[i][j]=a[i][j]+temp;
12     }
13     else{
14         d[i][j]=a[i][j];
15     }
16     return d[i][j];
17 }
18 void main(){
19     memset(a,0,100*100*sizeof(int));
20     memset(d,-1,100*100*sizeof(int));
21     scanf("%d",&n);
22     for(int i=0;i<n;i++){
23         for (int j=0;j<=i;j++)
24         {
25             scanf("%d",&a[i][j]);
26         }
27     }
28     int t=b(0,0);
29 }

转载于:https://www.cnblogs.com/txlbupt/p/3157773.html

动态规划初步--数字三角形相关推荐

  1. 最长子序列和 动态规划python_算法基础之python实现动态规划中数字三角形和最长上升子序列问题...

    数字三角形问题:python 问题描述:函数 问题分析:spa 程序代码:(递归法和动归法)code # -*- coding: utf-8 -*- """ Create ...

  2. 动态规划之数字三角形模型

    数字三角形模型 前言 最低通行费 方格取数 传纸条 前言 数字三角形题型的一般描述是: 给定一个共有N行的三角矩阵A,其中第t行有X列.从左上角出发,每次可以向下方或右下方走一步,最终到达底部求把经过 ...

  3. 【动态规划】数字三角形2

    [题目描述] 数字三角形 要求走到最后mod 100最大 [输入格式] 第1行n,表示n行 <=25 第2到n+1行为每个的权值 [输出格式] mod 100最大值 [分析] 设置状态f[i][ ...

  4. 动态规划_数字三角形

    问题描述:在下面的数字三角形中寻找一条从顶部到底边的路径,使得路径上所经过的数字之和最大,路径上的每一步都只能往左下或右下走.只需要求出这个最大和即可,不必给出具体路径. 输入数据的要求:三角形的行数 ...

  5. 动态规划之数字三角形问题

    问题描述 在数字三角形中寻找一条从顶部到底边的路径,使得路径上所经过的数字之和最大.路径上的每一步都只能往左下或者右下走.只需要求出这个最大和即可.不必给出具体路径. 三角形的行数大于1小于等于100 ...

  6. 【动态规划】数字三角形c语言

    本学期的的算法实践课的实验作业.写的不好请大家多多指教. [题目] 试设计一个算法,计算出从三角形的顶到底的一条路径,使该路径经过的数字总和最大. 数据输入: 由文件input.txt提供输入数据.文 ...

  7. 动态规划解决数字三角形

    美图: 问题描述: 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 给定一个数字三角形,如上,在这个三角形中寻找一条从顶部到底边的路径,使得路径上所经过的数字之和最大.路径上的每一步都只能 ...

  8. C++ 数字三角形(动态规划)

    一.题目 有三种方法实现: 这里就求权值之和最大的,最小的类似就不分析了. 1.自底向上  缺点:算法复杂,重复计算 2.自顶向下  缺点:重复计算,浪费时间 3.动态规划 思路和自底向上.自顶向下一 ...

  9. 2018.01.01(数字三角形,最长上升子序列等)

    2017.12.24  简单的动态规划 1.数字三角形(算法引入) 题目描述:下图所示是一个数字三角形,其中三角形中的数值为正整数,现规定从最顶层往下走到最底层,每一步可沿左斜线向下或右斜线向下走.设 ...

最新文章

  1. 从bitmap到布隆过滤器,再到高并发缓存设计策略
  2. 第六篇:Feedforward Networks 前向网络
  3. Android开发:图文分析 Handler通信机制 的工作原理
  4. yolov3 paddle
  5. Node.js 和Socket.IO 实现chat
  6. 【控制】《现代控制理论》谢克明老师-目录
  7. echarts - 使用echarts过程中遇到的问题(pending...)
  8. 校招对项目实战要求分析
  9. C_Learning(3)
  10. c# RestClient 请求接口
  11. Windows下Postman安装以及汉化
  12. Excel转PDF,Excel行数过多导致PDF折行、换行显示
  13. 手机怎么查看连接过的wifi密码
  14. Exception in thread “main“ java.lang.ArrayIndexOutOfBoundsException: 6 at lian39.main(lian39
  15. 虚拟服务器virt,virt-install error,主机不支持任何虚拟化选项
  16. 这个世界上,没有什么是实实在在的, 都是空虚,虚无, 空虚的空,虚无的虚,无的无....
  17. 页面驱动开发(Page Driven) —— 一种大多数人还不认同的技术
  18. Linux查看历史命令 history
  19. 记录一次redis漏洞攻击
  20. 【淘宝ERP-资料收集】关于Datatable的一些用法

热门文章

  1. .net core WebApi 使用Swagger生成API文档
  2. 自写图片遮罩层放大功能jquery插件源代码,photobox.js 1.0版,不兼容IE6
  3. 天平称重【递归解法】
  4. Mysql5.7.20使用group by查询(select *)时出现错误--修改sql mode
  5. spring EL 实现ref的效果
  6. Linux命令工具基础02 文件及目录管理
  7. 关于页面布局的一些注意点
  8. js - (初中级)常见笔试面试题
  9. 【转】几张图看懂列式存储
  10. C# 微支付退款申请接口 V3.3.6