![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构
文章平均质量分 55
本人大学所做数据结构试验以及有关知识
Mxmevol
头发多
展开
-
多重背包--单调队列实现
有 N 种物品和一个容量是 V 的背包。第 i 种物品最多有 si 件,每件体积是 vi,价值是 wi。求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。输出最大价值。输入格式第一行两个整数,N,V (0<N≤1000, 0<V≤20000),用空格隔开,分别表示物品种数和背包容积。接下来有 N 行,每行三个整数 vi,wi,si,用空格隔开,分别表示第 i 种物品的体积、价值和数量。输出格式输出一个整数,表示最大价值。数据范围0<N≤10000原创 2021-07-29 22:38:33 · 351 阅读 · 1 评论 -
拓扑排序的快速算法(有向无环图)
拓扑排序的快速算法(有向无环图)顶点集V = {1,2,3,4,5,6,7}边集<起点,终点>E = {<2,1>,< 3,2>,< 3,6>,<4,3>,<4,5>,<4,6>,<5,1>,<5,7>,<6,1>,<6,2>,<6,5>}拓扑排序序列T = ()算法如下:1.在边集E中的寻找终点不存在顶点集的边,在边集E中,终点没有属于顶点集的是4,原创 2020-12-23 09:14:18 · 4552 阅读 · 0 评论 -
0-1背包问题
有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。第 i 件物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 件物品的体积和价值。输出格式输出一个整数,表示最大价值。数据范围0<N,V≤10000<vi,wi≤1000输入样例4 51 22原创 2021-07-27 18:08:44 · 314 阅读 · 1 评论 -
二维费用背包问题
有 N 件物品和一个容量是 V 的背包,背包能承受的最大重量是 M。每件物品只能用一次。体积是 vi,重量是 mi,价值是 wi。求解将哪些物品装入背包,可使物品总体积不超过背包容量,总重量不超过背包可承受的最大重量,且价值总和最大。输出最大价值。输入格式第一行两个整数,N,V,M,用空格隔开,分别表示物品件数、背包容积和背包可承受的最大重量。接下来有 N 行,每行三个整数 vi,mi,wi,用空格隔开,分别表示第 i 件物品的体积、重量和价值。输出格式输出一个整数,表示最大价值。数据范围原创 2021-07-31 16:11:44 · 75 阅读 · 1 评论 -
图的着色,贪心算法(文件读取)
图的主色(文件读取)问题描述利用《数据结构》课程的相关知识完成一个具有一定难度的综合设计题目,利用C/C++语言进行程序设计,并规范地完成课程设计报告。通过课程设计,巩固和加深对线性表、栈、队列、字符串、树、图、查找、排序等理论知识的理解;掌握现实复杂问题的分析建模和解决方法(包括问题描述、系统分析、设计建模、代码实现、结果分析等);提高利用计算机分析解决综合性实际问题的基本能力。具体要求如下:1、对现实复杂问题中的数据对象特性及组织方法进行分析和研究,设计适当的数据逻辑结构、存贮结构以及相应运算操原创 2021-02-13 13:54:58 · 6969 阅读 · 1 评论 -
箱子最优化匹配,数据结构(c++)
题目描述:某一运输公司要将n个物品装到m个箱子中,每个物品都有一定的重量,每个箱子都有容量限制,如何用最少的箱子装载物品?说明:每个箱子的容量为M,物品i需要占用的箱子容量为W[i],0<=W[i]<=M。最优匹配法:令箱子j的可用用量为b[j],物品i应放入可用容量最小但不小于w[i]的箱子里。采用二叉查找树实现最优匹配法。功能要求及说明:(1)给定给各箱子的剩余容量,根据剩余容量大小,构造二叉查找树;(2)给定各物品的重量wi,根据要装入的物品需要占用的箱子容量w[i],在二叉查找原创 2021-02-13 18:05:45 · 6035 阅读 · 2 评论 -
多重背包问题
有 N 种物品和一个容量是 V 的背包。第 i 种物品最多有 si 件,每件体积是 vi,价值是 wi。求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品种数和背包容积。接下来有 N 行,每行三个整数 vi,wi,si,用空格隔开,分别表示第 i 种物品的体积、价值和数量。输出格式输出一个整数,表示最大价值。数据范围0<N,V≤1000<vi,wi,si≤100输入样例4 51原创 2021-07-27 21:34:09 · 175 阅读 · 1 评论 -
完全背包问题
有 N 种物品和一个容量是 V 的背包,每种物品都有无限件可用。第 i 种物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品种数和背包容积。接下来有 N 行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 种物品的体积和价值。输出格式输出一个整数,表示最大价值。数据范围0<N,V≤10000<vi,wi≤1000输入样例4 51 22原创 2021-07-27 20:06:40 · 107 阅读 · 1 评论 -
分组背包问题
有 N 组物品和一个容量是 V 的背包。每组物品有若干个,同一组内的物品最多只能选一个。每件物品的体积是 vij,价值是 wij,其中 i 是组号,j 是组内编号。求解将哪些物品装入背包,可使物品总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行有两个整数 N,V,用空格隔开,分别表示物品组数和背包容量。接下来有 N 组数据:·每组数据第一行有一个整数 Si,表示第 i 个物品组的物品数量;·每组数据接下来有 Si 行,每行有两个整数 vij,wij,用空格隔开,分别表示第原创 2021-07-31 16:20:34 · 106 阅读 · 1 评论 -
二叉搜索树(城市数据库)
实验内容:1.利用BST实现一个城市数据库:每个数据库结点包括城市名称和以整数x与y表示的城市坐标,根据城市名称组织该BST;2.在该数据库上实现按城市名称进行的插入、删除和检索;3.打印出以指定字母打头的所有城市记录;4.打印出与指定点的距离在给定值之内的所有城市记录;#include <iostream>#include <string>using namespace std;class BSTNode {//二叉树节点private: string key;原创 2021-02-13 20:30:39 · 5094 阅读 · 0 评论 -
混合背包问题
有 N 种物品和一个容量是 V 的背包。物品一共有三类:第一类物品只能用1次(01背包);第二类物品可以用无限次(完全背包);第三类物品最多只能用 si 次(多重背包);每种体积是 vi,价值是 wi。求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。输出最大价值。输入格式第一行两个整数,N,V,用空格隔开,分别表示物品种数和背包容积。接下来有 N 行,每行三个整数 vi,wi,si,用空格隔开,分别表示第 i 种物品的体积、价值和数量。si=−1 表示第 i 种原创 2021-07-29 23:35:12 · 199 阅读 · 1 评论 -
图的操作
图的操作:1.图的存储结构使用邻接矩阵。2.创建图操作类,支持BFS遍历、DFS遍历、求单源最短路径、求最小生成树、判断是否存在回路等五个功能,这些功能封装成图操作类的成员函数3. 采用“起始节点,终止节点,权值”输入图的m条边,创建图。4. 输出从节点1开始的BFS遍历、DFS遍历节点遍历顺序。5. 输出从节点1到其余节点的最短路径及最短路径长度,如果没有路径,输出0。6. 输出图的最小生成树包含的边,边用“起始节点,终止节点,权值”表示。输入输出说明:输入:第1行输入2个整数,图的节原创 2021-02-13 20:35:14 · 4600 阅读 · 1 评论