数据结构-第二章线性表-算法设计题8

算法设计题

问题描述

        8.设计一个算法,删除递增有序链表中值大于mink且小于maxk的所有元素(mink和maxk是给定的两个参数,其值可以和表中的元素相同,也可以不同。

算法分析

        此题的关键点在于:通过遍历链表能够定位待删除元素的下边界和上边界,即可找到第一个值大于mink的结点和第一个值大于等于maxk的结点。

算法步骤

        1.查找第一个值大于mink的结点,用q指向该结点,pre指向该节点的前驱结点。
        2.继续向下遍历链表,查找第一个值大于等于maxk的结点,用p指向该结点。
        3.修改下边界前驱结点的指针域,使其指向上边界(pre->next=p)。 
        4.依次释放待删除结点的空间。 

算法描述

        主要代码

void DeleteMinMax(LinkList &L,int mink,int maxk)
{
	//删除递增有序链表L中值大于mink且小于maxk的所有元素
	LinkList pre;
	LinkList p=L->next;			//p指向首元结点
	while(p&&p->data<=mink) 	//查找第一个值大于mink的结点 
	{
		pre=p;					//pre指向前驱结点
		p=p->next; 
	}
	while(p&&p->data<maxk)		//查找第一个值大于等于maxk的结点 
	{
		p=p->next;
	}
	LinkList q=pre->next;
	pre->next=p;				//修改待删除节点的指针 
	while(q!=p)					//依次释放待删除结点的空间 
	{
		LinkList s=q->next;
		delete q;
		q=s;
	 } 
 } 

        完整代码

//******************************数据结构-第二章线性表-算法设计题8******************************// 
#include <stdio.h>
#include <iostream>
#define OK 1
#define ERROR 0
using namespace std;
typedef int Status;
//定义单链表的结构类型
typedef int ElemType;
//------单链表的存储结构-----// 
typedef struct LNode
{
	ElemType data;	     //结点的数据域
	struct LNode *next;	//结点的指针域,指向下一个指针 
 }LNode,*LinkList;      // LNode是结点,LinkList是链表,LinkList为指向结构体LNode的指针类型 

//------单链表的初始化-----//
  //【算法步骤】//
	//1.生成新结点作为头结点,用头指针L指向头结点。
	//2.头结点的指针域置空。
Status InitList(LinkList &L)
{
	//构造一个空的单链表L
	L=new LNode;      //生成新结点作为头结点,用头指针L指向头结点  或L=(LinkList)malloc(sizeof(LNode))
	L->next=NULL;     //头结点的指针域置空
	return OK; 
 } 
 
//------后插法创建单链表-----//
  //【算法步骤】//
	//1.创建一个只有头结点的空链表。
	//2.尾指针r初始化,指向头结点。 
	//3.根据创建链表包括的元素个数n,循环n次执行以下操作:
	   //生成一个新结点*P; 
	   //输入元素值赋给新结点*p的数据域;
	   //将新结点*p插入到尾结点*r之后;
	   //尾指针r指向新的尾结点*p。 
void CreateList_R(LinkList &L,int n)
{
	//正位序输入n个元素的值,建立带表头结点的单链表L
	L=new LNode;      //或L=(LinkList)malloc(sizeof(LNode))
	L->next=NULL;    //先建立一个带头结点的空链表 	
	LinkList r=L;             //尾指针r指向头结点 
	for(int i=0;i<n;++i)
	{
		LinkList p=new LNode;  //生成新结点*p
		cin>>p->data;  //输入元素值赋给新结点*p的数据域
		p->next=NULL;
		r->next=p;    //将新结点*p插入到尾结点*r之后 
		r=p;          //r指向新的尾结点*p 
	 }
 }

//------单链表的插入-----//
  //【算法步骤】//
  //将值为e的新结点插入到表的第i个结点的位置上,即插入到结点ai-1与ai之间,具体插入过程如图所示,步骤如下: 
	//1.查找结点ai-1并由指针p指向该结点。
	//2.生成一个新结点*s。 
	//3.将新结点*s的数据域置为e。 
	//4.将新结点*s的指针域指向结点ai。
	//5.将结点*p的指针域指向新结点*s。
Status ListInsert(LinkList &L,int i,ElemType e)
{
	//在带头结点的单链表L中第i个位置插入值为e的新结点 
	LinkList p=L;
	int j=0;
	while(p && (j<i-1)) 
	{
		p=p->next;   //查找第i-1个结点,p指向该结点 
		++j;
	}
	if(!p||j>i-1) return ERROR;  //i>n+1或者i<1
	LinkList s=new LNode;    //生成新结点*s 
	s->data=e;		//将结点*s的数据域置为e 
	s->next=p->next;//将结点*s的指针域指向结点ai 
	p->next=s;		//将结点*p的指针域指向结点*s 
	return OK; 	 
 }
 
//------删除递增有序链表L中值大于mink且小于maxk的所有元素-----//
  //【算法步骤】//
	//1.查找第一个值大于mink的结点,用q指向该结点,pre指向该节点的前驱结点。
	//2.继续向下遍历链表,查找第一个值大于等于maxk的结点,用p指向该结点。
	//3.修改下边界前驱结点的指针域,使其指向上边界(pre->next=p)。 
	//4.依次释放待删除结点的空间。 
void DeleteMinMax(LinkList &L,int mink,int maxk)
{
	//删除递增有序链表L中值大于mink且小于maxk的所有元素
	LinkList pre;
	LinkList p=L->next;			//p指向首元结点
	while(p&&p->data<=mink) 	//查找第一个值大于mink的结点 
	{
		pre=p;					//pre指向前驱结点
		p=p->next; 
	}
	while(p&&p->data<maxk)		//查找第一个值大于等于maxk的结点 
	{
		p=p->next;
	}
	LinkList q=pre->next;
	pre->next=p;				//修改待删除节点的指针 
	while(q!=p)					//依次释放待删除结点的空间 
	{
		LinkList s=q->next;
		delete q;
		q=s;
	 } 
 } 

//------打印单链表函数-----//  
void PrintList(LinkList L)
{
	printf("当前单链表中所有元素为:");
	for(LinkList p=L->next;p!=NULL;p=p->next)
	{
		if(p->next==NULL)
			printf("%d",p->data);
		else
			printf("%d->",p->data);
	}
	printf("\n"); 
}

//------创建单链表函数------//
void CreateList(LinkList &L) 
{
	int n;
	printf("请输入要创建的单链表L的长度:");
	scanf("%d",&n);
	printf("请依次输入%d个数(空格隔开):",n);
	CreateList_R(L,n);
	printf("单链表L创建成功!\n");
	PrintList(L);
}

//------单链表插入函数------//
void InsertList(LinkList &L)
{
	int i,e;
	printf("请输入要插入的位置:");
	scanf("%d",&i);
	printf("请输入要在第%d个位置插入的数据元素:",i);
	scanf("%d",&e); 
	bool flag=ListInsert(L,i,e);
	if(flag)
	{
		printf("元素%d插入单链表成功!\n", e);
		PrintList(L);	
	}
	else
	{
		printf("元素%d插入单链表失败!\n",e);
	}	
 } 
 
//------删除递增有序链表L中值大于mink且小于maxk的所有元素------//
void DeleteMinMaxList(LinkList L,int mink,int maxk)
{
	DeleteMinMax(L,2,6);
	printf("删除递增有序链表L中值大于mink且小于maxk的所有元素后的数据元素:\n");
	PrintList(L);	
}

//------主函数-----//
int main()
{	
	int n,mink,maxk;
	LinkList L; 
	InitList(L);
	CreateList(L);
	DeleteMinMaxList(L,mink,maxk);
 } 

        运行结果

请输入要创建的单链表L的长度:8
请依次输入8个数(空格隔开):1 2 3 4 5 6 7 8
单链表L创建成功!
当前单链表中所有元素为:1->2->3->4->5->6->7->8
删除递增有序链表L中值大于mink且小于maxk的所有元素后的数据元素:
当前单链表中所有元素为:1->2->6->7->8

--------------------------------
Process exited after 13.63 seconds with return value 0
请按任意键继续. . .

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
前言 1 章 绪论1 本章概略1 1.1 针对考研数据结构的代码书写规范以及C 与C 语言基础1 1.1.1 考研综合应用算法设计部分的代码书写规范1 1.1.2 考研中的C 与C 语言基础3 1.2 算法的时间复杂度与空间复杂度分析基础 12 1.2.1 考研中的算法时间复杂度分析 12 1.2.2 例选讲 12 1.2.3 考研中的算法空间复杂度分析 14 1.3 数据结构算法的基本概念 14 1.3.1 数据结构的基本概念 14 1.3.2 算法的基本概念 15 习 16 习答案 17 2 章 线性表 20 大纲要求 20 考点与要点分析 20 核心考点 20 基础要点 20 知识点讲解 20 2.1 线性表的基本概念与实现 20 2.2 线性表的结构体定义和基本操作 24 2.2.1 线性表的结构体定义 24 2.2.2 顺序表的操作 26 2.2.3 单链表的操作 29 2.2.4 双链表的操作 33 2.2.5 循环链表的操作 35 ▲真仿造 35 真仿造答案与讲解 36 习精选 37 习答案 真精选答案 41 3 章 栈和队列 55 大纲要求 55 考点与要点分析 55 核心考点 55 基础要点 55 知识点讲解 55 2019 版数据结构高分笔记 X 3.1 栈和队列的基本概念 55 3.1.1 栈的基本概念 55 3.1.2 队列的基本概念 56 3.2 栈和队列的存储结构、算法与应用 56 3.2.1 本章所涉及的结构体定义 56 3.2.2 顺序栈 57 3.2.3 链栈 59 3.2.4 栈的应用 60 3.2.5 顺序队 64 3.2.6 链队 66 3.3 抽象数据类型 69 ▲真仿造 71 真仿造答案与讲解 71 习精选 74 习答案 真精选答案 79 4 章 串 91 知识点讲解 91 4.1 串数据类型的定义 91 4.1.1 串的定义 91 4.1.2 串的存储结构 91 4.1.3 串的基本操作 92 4.2 串的模式匹配算法 95 4.2.1 简单模式匹配算法 95 4.2.2 KMP 算法 96 4.2.3 KMP 算法的改进 99 习 102 习答案 103 5 章 数组、矩阵与广义表 113 知识点讲解 113 5.1 数组 113 5.2 矩阵的压缩存储 114 5.2.1 矩阵 114 5.2.2 特殊矩阵和稀疏矩阵 115 5.3 广义表 121 习 122 习答案 123 6 章 树与二叉树 132 大纲要求 132 考点与要点分析 132 核心考点 132 基础要点 132 知识点讲解 132 6.1 树的基本概念 132 6.1.1 树的定义 132 6.1.2 树的基本术语 132 6.1.3 树的存储结构 133 6.2 二叉树 134 6.2.1 二叉树的定义 134 6.2.2 二叉树的主要性质 135 6.2.3 二叉树的存储结构 137 6.2.4 二叉树的遍历算法 137 6.2.5 二叉树遍历算法的改进 146 6.3 树和森林与二叉树的互相转换 155 6.3.1 树转换为二叉树 155 6.3.2 二叉树转换为树 156 6.3.3 森林转换为二叉树 156 6.3.4 二叉树转换为森林 157 6.3.5 树和森林的遍历 157 6.4 树与二叉树的应用 158 6.4.1 二叉排序树与平衡二叉树 158 6.4.2 赫夫曼树和赫夫曼编码 159 ▲真仿造 162 真仿造答案与解析 162 习精选 163 习答案 真精选答案 168 7 章 图 183 大纲要求 183 考点与要点分析 183 核心考点 183 基础要点 183 知识点讲解 183 7.1 图的基本概念 183 7.2 图的存储结构 184 7.2.1 邻接矩阵 185 7.2.2 邻接表 186 7.2.3 邻接多重表 187 7.3 图的遍历算法操作 188 7.3.1 深度优先搜索遍历 188 7.3.2 广度优先搜索遍历 189 7.3.3 例选讲 190 7.4 小(代价)生成树 193 7.4.1 普里姆算法和克鲁斯卡尔算法 193 7.4.2 例选讲 197 7.5 短路径 198 7.5.1 迪杰斯特拉算法 198 7.5.2 弗洛伊德算法 204 7.6 拓扑排序 207 7.6.1 AOV 网 207 7.6.2 拓扑排序核心算法 207 7.6.3 例选讲 209 7.7 关键路径 209 7.7.1 AOE 网 209 7.7.2 关键路径核心算法 210 ▲真仿造 213 真仿造答案与解析 213 习精选 215 习答案 真精选答案 221 8 章 排序 234 大纲要求 234 考点与要点分析 234 核心考点 234 基础要点 234 知识点讲解 235 8.1 排序的基本概念 235 8.1.1 排序 235 8.1.2 稳定性 235 8.1.3 排序算法的分类 235 8.2 插入类排序 236 8.2.1 直接插入排序 236 8.2.2 折半插入排序 237 8.2.3 希尔排序 238 8.3 交换类排序 240 8.3.1 起泡排序 240 8.3.2 快速排序 241 8.4 选择类排序 243 8.4.1 简单选择排序 243 8.4.2 堆排序 244 8.5 二路归并排序 247 8.6 基数排序 248 8.7 外部排序 252 8.7.1 概念与流程 252 8.7.2 置换-选择排序 253 8.7.3 佳归并树 254 8.7.4 败者树 255 8.7.5 时间与空间复杂度相关问 257 8.8 排序知识点小结 258 ▲真仿造 259 真仿造答案与解析 259 习精选 260 习答案 真精选答案 265 9 章 查找 275 大纲要求 275 考点与要点分析 275 核心考点 275 基础要点 275 知识点讲解 275 9.1 查找的基本概念、顺序查找法、折半查找法 275 9.1.1 查找的基本概念 275 9.1.2 顺序查找法 276 9.1.3 折半查找法 277 9.1.4 分块查找 279 9.2 二叉排序树与平衡二叉树 280 9.2.1 二叉排序树 280 9.2.2 平衡二叉树 283 9.3 B-树的基本概念及其基本操作、B 树的基本概念 286 9.3.1 B-树(B 树)的基本概念 286 9.3.2 B-树的基本操作 288 9.3.3 B 树的基本概念 292 9.4 散列表 293 9.4.1 散列表的概念 293 9.4.2 散列表的建立方法以及冲突解决方法 293 9.4.3 散列表的性能分析 297 ▲真仿造 298 真仿造答案与解析 298 习精选 299 习答案 真精选答案 304 10 章 考研中某些算法的分治法解释 318
本书是关于计算机科学与工程领的基础性研究科目之一——数据结构算法的专著。 本书在简要回顾了基本的C++ 程序设计概念的基础上,全面系统地介绍了队列、堆栈、树、图等基本数据结构,以及贪婪算法、分而治之算法、分枝定界算法等多种算法设计方法,为数据结构算法的继续学习和研究奠定了一个坚实的基础。更为可贵的是,本书不仅仅介绍了理论知识,还提供了50多个应用实例及600多道练习。 本书内容广博权威,结构清晰合理,是一本全新的有关数据结构算法的教材,对于计算机科学与工程领的从业人员也是一本很好的参考书。 目 录 译者序 前言 第一部分 预备知识 第1章 C++程序设计 1 1.1 引言 1 1.2 函数与参数 2 1.2.1 传值参数 2 1.2.2 模板函数 3 1.2.3 引用参数 3 1.2.4 常量引用参数 4 1.2.5 返回值 4 1.2.6 递归函数 5 1.3 动态存储分配 9 1.3.1 操作符new 9 1.3.2 一维数组 9 1.3.3 异常处理 10 1.3.4 操作符delete 10 1.3.5 二维数组 10 1.4 类 13 1.4.1 类Currency 13 1.4.2 使用不同的描述方法 18 1.4.3 操作符重载 20 1.4.4 引发异常 22 1.4.5 友元和保护类成员 23 1.4.6 增加#ifndef, #define和#endif语句 24 1.5 测试与调试 24 1.5.1 什么是测试 24 1.5.2 设计测试数据 26 1.5.3 调试 28 1.6 参考及推荐读物 29 第2章 程序性能 30 2.1 引言 30 2.2 空间复杂性 31 2.2.1 空间复杂性的组成 31 2.2.2 举例 35 2.3 时间复杂性 37 2.3.1 时间复杂性的组成 37 2.3.2 操作计数 37 2.3.3 执行步数 44 2.4 渐进符号(O、 健?、 o) 55 2.4.1 大写O符号 56 2.4.2 椒?58 2.4.3 符号 59 2.4.4 小写o符号 60 2.4.5 特性 60 2.4.6 复杂性分析举例 61 2.5 实际复杂性 66 2.6 性能测量 68 2.6.1 选择实例的大小 69 2.6.2 设计测试数据 69 2.6.3 进行实验 69 2.7 参考及推荐读物 74 第二部分 数据结构 第3章 数据描述 75 3.1 引言 75 3.2 线性表 76 3.3 公式化描述 77 3.3.1 基本概念 77 3.3.2 异常类NoMem 79 3.3.3 操作 79 3.3.4 评价 83 3.4 链表描述 86 3.4.1 类ChainNode 和Chain 86 3.4.2 操作 88 3.4.3 扩充类Chain 91 3.4.4 链表遍历器类 92 3.4.5 循环链表 93 3.4.6 与公式化描述方法的比较 94 3.4.7 双向链表 95 3.4.8 小结 96 3.5 间接寻址 99 3.5.1 基本概念 99 3.5.2 操作 100 3.6 模拟指针 102 3.6.1 SimSpace的操作 103 3.6.2 采用模拟指针链表 106 3.7 描述方法的比较 110 3.8 应用 111 3.8.1 箱子排序 111 3.8.2 基数排序 116 3.8.3 等价类 117 3.8.4 凸包 122 3.9 参考及推荐读物 127 第4章 数组和矩阵 128 4.1 数组 128 4.1.1 抽象数据类型 128 4.1.2 C++数组 129 4.1.3 行主映射和列主映射 129 4.1.4 类Array1D 131 4.1.5 类Array2D 133 4.2 矩阵 137 4.2.1 定义和操作 137 4.2.2 类Matrix 138 4.3 特殊矩阵 141 4.3.1 定义和应用 141 4.3.2 对角矩阵 143 4.3.3 三对角矩阵 144 4.3.4 三角矩阵 145 4.3.5 对称矩阵 146 4.4 稀疏矩阵 149 4.4.1 基本概念 149 4.4.2 数组描述 149 4.4.3 链表描述 154 第5章 堆栈 161 5.1 抽象数据类型 161 5.2 派生类和继承 162 5.3 公式化描述 163 5.3.1 Stack的效率 164 5.3.2 自定义Stack 164 5.4 链表描述 166 5.5 应用 169 5.5.1 括号匹配 169 5.5.2 汉诺塔 170 5.5.3 火车车厢重排 172 5.5.4 开关盒布线 176 5.5.5 离线等价类问 178 5.5.6 迷宫老鼠 180 5.6 参考及推荐读物 188 第6章 队列 189 6.1 抽象数据类型 189 6.2 公式化描述 190 6.3 链表描述 194 6.4 应用 197 6.4.1 火车车厢重排 197 6.4.2 电路布线 201 6.4.3 识别图元 204 6.4.4 工厂仿真 206 6.5 参考及推荐读物 217 第7章 跳表和散列 218 7.1 字典 218 7.2 线性表描述 219 7.3 跳表描述 222 7.3.1 理想情况 222 7.3.2 插入和删除 223 7.3.3 级的分配 224 7.3.4 类SkipNode 224 7.3.5 类SkipList 225 7.3.6 复杂性 229 7.4 散列表描述 229 7.4.1 理想散列 229 7.4.2 线性开型寻址散列 230 7.4.3 链表散列 234 7.5 应用——文本压缩 238 7.5.1 LZW压缩 239 7.5.2 LZW压缩的实现 239 7.5.3 LZW解压缩 243 7.5.4 LZW解压缩的实现 243 7.6 参考及推荐读物 247 第8章 二叉树和其他树 248 8.1 树 248 8.2 二叉树 251 8.3 二叉树的特性 252 8.4 二叉树描述 253 8.4.1 公式化描述 253 8.4.2 链表描述 254 8.5 二叉树常用操作 256 8.6 二叉树遍历 256 8.7 抽象数据类型BinaryTree 259 8.8 类BinaryTree 260 8.9 抽象数据类型及类的扩充 263 8.9.1 输出 263 8.9.2 删除 264 8.9.3 计算高度 264 8.9.4 统计节点数 265 8.10 应用 265 8.10.1 设置信号放大器 265 8.10.2 在线等价类 268 8.11 参考及推荐读物 275 第9章 优先队列 276 9.1 引言 276 9.2 线性表 277 9.3 堆 278 9.3.1 定义 278 9.3.2 最大堆的插入 279 9.3.3 最大堆的删除 279 9.3.4 最大堆的初始化 280 9.3.5 类MaxHeap 281 9.4 左高树 285 9.4.1 高度与宽度优先的最大及最小 左高树 285 9.4.2 最大HBLT的插入 287 9.4.3 最大HBLT的删除 287 9.4.4 合并两棵最大HBLT 287 9.4.5 初始化最大HBLT 289 9.4.6 类MaxHBLT 289 9.5 应用 293 9.5.1 堆排序 293 9.5.2 机器调度 294 9.5.3 霍夫曼编码 297 9.6 参考及推荐读物 302 第10章 竞?303 10.1 引言 303 10.2 抽象数据类型WinnerTree 306 10.3 类WinnerTree 307 10.3.1 定义 307 10.3.2 类定义 307 10.3.3 构造函数、析构函数及Winner 函数 308 10.3.4 初始化赢者树 308 10.3.5 重新组织比赛 310 10.4 输者树 311 10.5 应用 312 10.5.1 用最先匹配法求解箱子装载 问 312 10.5.2 用相邻匹配法求解箱子装载 问 316 第11章 搜索树 319 11.1 二叉搜索树 320 11.1.1 基本概念 320 11.1.2 抽象数据类型BSTree和 IndexedBSTree 321 11.1.3 类BSTree 322 11.1.4 搜索 322 11.1.5 插入 323 11.1.6 删除 324 11.1.7 类DBSTree 326 11.1.8 二叉搜索树的高度 327 11.2 AVL树 328 11.2.1 基本概念 328 11.2.2 AVL树的高度 328 11.2.3 AVL树的描述 329 11.2.4 AVL搜索树的搜索 329 11.2.5 AVL搜索树的插入 329 11.2.6 AVL搜索树的删除 332 11.3 红-黑树 334 11.3.1 基本概念 334 11.3.2 红-黑树的描述 336 11.3.3 红-黑树的搜索 336 11.3.4 红-黑树的插入 336 11.3.5 红-黑树的删除 339 11.3.6 实现细节的考虑及复杂性分析 343 11.4 B-树 344 11.4.1 索引顺序访问方法 344 11.4.2 m 叉搜索树 345 11.4.3 m 序B-树 346 11.4.4 B-树的高度 347 11.4.5 B-树的搜索 348 11.4.6 B-树的插入 348 11.4.7 B-树的删除 350 11.4.8 节点结构 353 11.5 应用 354 11.5.1 直方图 354 11.5.2 用最优匹配法求解箱子装载 问 357 11.5.3 交叉分布 359 11.6 参考及推荐读物 363 第12章 图 365 12.1 基本概念 365 12.2 应用 366 12.3 特性 368 12.4 抽象数据类型Graph和Digraph 370 12.5 无向图和有向图的描述 371 12.5.1 邻接矩阵 371 12.5.2 邻接压缩表 373 12.5.3 邻接链表 374 12.6 网络描述 375 12.7 类定义 376 12.7.1 不同的类 376 12.7.2 邻接矩阵类 377 12.7.3 扩充Chain类 380 12.7.4 类LinkedBase 381 12.7.5 链接类 382 12.8 图的遍历 386 12.8.1 基本概念 386 12.8.2 邻接矩阵的遍历函数 387 12.8.3 邻接链表的遍历函数 388 12.9 语言特性 389 12.9.1 虚函数和多态性 389 12.9.2 纯虚函数和抽象类 391 12.9.3 虚基类 391 12.9.4 抽象类和抽象数据类型 393 12.10 图的搜索算法 394 12.10.1 宽度优先搜索 394 12.10.2 类Network 395 12.10.3 BFS的实现 395 12.10.4 BFS的复杂性分析 396 12.10.5 深度优先搜索 397 12.11 应用 399 12.11.1 寻找路径 399 12.11.2 连通图及其构件 400 12.11.3 生成树 402 第三部分 算法设计方法 第13章 贪婪算法 405 13.1 最优化问 405 13.2 算法思想 406 13.3 应用 409 13.3.1 货箱装船 409 13.3.2 0/1背包问 410 13.3.3 拓扑排序 412 13.3.4 二分覆盖 415 13.3.5 单源最短路径 421 13.3.6 最小耗费生成树 424 13.4 参考及推荐读物 433 第14章 分而治之算法 434 14.1 算法思想 434 14.2 应用 440 14.2.1 残缺棋盘 440 14.2.2 归并排序 443 14.2.3 快速排序 447 14.2.4 选择 452 14.2.5 距离最近的点对 454 14.3 解递归方程 462 14.4 复杂性的下限 463 14.4.1 最小最大问的下限 464 14.4.2 排序算法的下限 465 第15章 动态规划 467 15.1 算法思想 467 15.2 应用 469 15.2.1 0/1背包问 469 15.2.2 图像压缩 471 15.2.3 矩阵乘法链 476 15.2.4 最短路径 480 15.2.5 网络的无交叉子集 483 15.2.6 元件折叠 486 15.3 参考及推荐读物 491 第16章 回溯 492 16.1 算法思想 492 16.2 应用 496 16.2.1 货箱装船 496 16.2.2 0/1背包问 503 16.2.3 最大完备子图 506 16.2.4 旅行商问 508 16.2.5 电路板排列 510 第17章 分枝定界 516 17.1 算法思想 516 17.2 应用 519 17.2.1 货箱装船 519 17.2.2 0/1背包问 526 17.2.3 最大完备子图 528 17.2.4 旅行商问 529 17.2.5 电路板排列 532

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值