IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 采用动态规划思维求解数塔问题,c++实现 -> 正文阅读

[数据结构与算法]采用动态规划思维求解数塔问题,c++实现

采用动态规划思维求解数塔问题,c++实现

数塔问题

问题描述: 加粗样式从塔顶往下走,如何走过的步数最大
在这里插入图片描述
问题分析:

  1. 数塔游戏(5层)
  2. 从塔顶到塔底,走过的值最大
  3. 从第一层开始,往左走还是往右走,变化两个4层他的问题,因此改问题存在子问题重叠性质
  4. 由于该问题要求走过的值最大,因此,该问题存在要求最优解,因此符合动态规划用法
  5. 递归求解过程:
    1. 塔数据用二维数组存储d[5][5],规划表格用maxD[5][5]存储(用来存储子问题的解),该结构是下三角结构在这里插入图片描述

    2. 划分子问题:第1层走左还是走右取决去第2层哪个值最大,max(2),第二层变化两个4层他的问题

    3. 递推公式:第一层的最优解有d[0][0] + max{maxD[1][0], maxD[1][1]},第i层的最优解为d[i][j] = amx{maxD[i+1][j], maxD[i+1][j+1]}, 最后一层的最优解是自己,级maxD[n-1][j] = d[n-1][j]

    4. 填表,表的最顶部的就是最优解在这里插入图片描述

算法实现

#include<iostream>
using namespace std; 

int max(int a, int b) {
	return a > b ? a : b;
}

int main() {
	int n = 5;
	int d[5][5] = {{8, 0}, {12, 15, 0}, {3, 9, 6, 0}, {8, 10, 5, 12, 0}, {16, 4, 18, 10, 9}};
	int maxD[5][5] = {{0}, {0}, {0}, {0}, {16, 4, 18, 10, 9}};
	// 先填写最后一层
	for (int i = n-2; i>=0; i--) {
		for (int j = 0; j <= i; j++) {
			maxD[i][j] = d[i][j] + max(maxD[i+1][j], maxD[i+1][j+1]);
		}
	}
	// 输出初始值 
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < n; j++) {
			cout<<d[i][j]<<"\t";
		}
		cout<<endl;
	}
	cout<<"初始"<<endl; 
	// 输出结果 
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < n; j++) {
			cout<<maxD[i][j]<<"\t";
		}
		cout<<endl;
	}
	return 0;	
}

结果

在这里插入图片描述

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-04-01 00:19:45  更:2022-04-01 00:23:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 9:42:50-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码