![](https://img-blog.csdnimg.cn/21b830a1d7d842aaa3cc546dad1a3c8d.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法导论
Introduction to Algorithms~
张嘉睿大聪明
这个博主很懒,什么都没有留下...
展开
-
算法导论12--Dijkstra算法
一、目的1.熟悉算法设计的基本思想2.掌握最小生成树算法的思路二、内容与设计思想川西风光几枚,以下图片是川西路线图。张三是旅游爱好者,他从成都出发自驾到西藏江达。1)从成都到江达的最短自驾路线是什么?可以用Dijkstra算法来求解。#include<bits/stdc++.h>using namespace std;#define Infinity 65535#define ERROR -1int P[10000];string A[33]={"成都","都江堰","原创 2021-11-14 10:37:17 · 740 阅读 · 0 评论 -
算法导论11--最小生成树电网长度问题
一、目的1.熟悉算法设计的基本思想2.掌握最小生成树算法的思路二、内容与设计思想国家电网公司想在全国布局超高压输电网络,联通所有省会城市。为了降低成本,并且达到某些硬性要求,国家电网按照以下五种策略进行规划布局。(1)要求整个电网的长度最短。(2)要求在西宁与郑州拉一根直达专线的情况下,使得整个电网长度最短(3)要求不仅在西宁与郑州之间拉直达专线,还在杭州与长沙之间拉直达专线的情况下,使得整个电网长度最短。(4)在香港与澳门、澳门与广州不拉直达线路的前提之下,使得整个电网的长度最短。(5)原创 2021-11-12 16:38:40 · 403 阅读 · 0 评论 -
算法导论10--零钱找零问题与最优等待问题
一、目的1.熟悉算法设计的基本思想2.掌握贪心算法的思路二、内容与设计思想2.1 最优打印等待问题某个班级有m位同学一起去打印店打印实验报告。这个打印店只有一台打印机。由于各实验报告的厚薄不同,所需打印时间也不相同。同学i需要的打印时间为ti(1<=i<=m)。应该应如何安排这些同学的打印次序使得平均等待时间最小?输入数据格式:在文件students.txt中。第1行是正整数m,表示有m位同学。接下来的一行中有m个正整数,表示m个同学所需要的打印时间。输出数据格式:将最小平均等待时原创 2021-11-12 16:26:12 · 789 阅读 · 0 评论 -
算法导论09--动态表
一、目的1.熟悉算法设计的基本思想2.掌握Dynamic table的方法二、内容与设计思想有一个公司想开发一个关于花卉的百科全书,用户只要输入花卉的名称,就能够输出花卉的详细信息。花卉包括:牡丹、芍药、茶花、菊花、梅花、兰花、月季、杜鹃花、郁金香、茉莉花、海棠、荷花、栀子花、莲花、百合、康乃馨、玫瑰、格桑花等1000种。这个公司想提升花卉检索和存储效率,打算采用动态表(dynamic table)来实现。由于花卉的数量可能会增加,也可能会减少,所实现的动态表需要有如下功能:能够插入数据能够删原创 2021-11-12 16:23:15 · 514 阅读 · 0 评论 -
算法导论08--优化二叉搜索树、顺序输入和哈希表
一、目的1.熟悉算法设计的基本思想2.掌握计数排序(count sort)的方法二、内容与设计思想有一个公司想开发一个关于花卉的百科全书,用户只要输入花卉的名称,就能够输出花卉的详细信息。花卉包括:牡丹、芍药、茶花、菊花、梅花、兰花、月季、杜鹃花、郁金香、茉莉花、海棠、荷花、栀子花、莲花、百合、康乃馨、玫瑰、格桑花。公司也在试运行阶段发现这些花的访问频率不一,有些花经常性被访问,有些被访问的次数就少很多了。这18种花中,第1种的访问频率是6,第2-3种的访问频率是5,第4-6种的访问频率是4,第7-原创 2021-11-14 10:46:57 · 406 阅读 · 0 评论 -
算法导论07--计算最长公共子序列
一、目的1.熟悉算法设计的基本思想2.掌握计算最长公共子序列的方法二、内容与设计思想编写随机整数生成算法,生成0到9范围内的N个随机整数并输出;编写计算最长公共子序列方法的代码;随机生成两组范围为0到9的5、50、500、5000个随机整数,并求两组整数的最长公共子序列随机生成一组范围为0到9的5000个随机整数和另一组范围为0到9的5、50、500、5000个随机整数,并求两组整数的最长公共子序列三、使用环境推荐使用C/C++集成编译环境。四、实验过程1、写出计算最长公共子序列方原创 2021-11-12 16:19:05 · 458 阅读 · 0 评论 -
算法导论06--红黑树构建算法
一、目的1.熟悉算法设计的基本思想2.掌握构建红黑树的方法二、内容与设计思想编写随机整数生成算法,生成S到T范围内的N个随机整数并输出;编写红黑树构建算法,中序遍历各节点,输出颜色和值;随机生成1e2、1e3、1e4、1e5、1e6个不同的数,使用红黑树构建算法,并画图描述不同情况下的运行时间差异;三、使用环境推荐使用C/C++集成编译环境。四、实验过程1、写出红黑树构建算法的源代码#include<bits/stdc++.h>using namespace std;原创 2021-11-12 16:17:09 · 1058 阅读 · 0 评论 -
算法导论05--SELECT算法与随机选择算法
一、目的1.熟悉算法设计的基本思想2.掌握随机选择算法(rand select)的方法3.掌握选择算法(SELECT)的方法二、内容与设计思想编写随机整数生成算法,生成S到T范围内的N个随机整数并输出;编写随机选择算法和SELECT算法;随机生成1e2、1e3、1e4、1e5、1e6个数,使用随机选择算法和SELECT算法找到第0.5N大的数输出,并画图描述不同情况下的运行时间差异;随机生成1e6个数,使用随机选择算法和SELECT算法找到第0.2N、0.4N、0.6N、0.8N大的数输出原创 2021-11-12 16:14:15 · 1054 阅读 · 0 评论 -
算法导论04--计数排序
一、目的1.熟悉算法设计的基本思想2.掌握计数排序(count sort)的方法二、内容与设计思想随机生成1…M范围内的N个整数;编写计数排序算法;在相同M的条件下,N分别等于0.1M, 0.2M, 0.5M, 1M时的运行时间;在相同N的条件下,M分别等于2N,5N,10N,20N时的运行时间。三、使用环境推荐使用C/C++集成编译环境。四、实验过程1、#include<bits/stdc++.h>using namespace std;#define MaxD原创 2021-11-12 16:11:15 · 588 阅读 · 0 评论 -
算法导论03--堆实现优先级队列
一、目的1.熟悉算法设计的基本思想2.掌握优先级队列的方法二、内容与设计思想利用堆实现优先级队列;按照顺序插入1,3,5,7,9,2,4,6,8,10,11,13,15,12,14,构建优先级队列,打印出整个数组的内容;按照顺序插入9,7,10,12,5,4,2,1,15,14,3,7,8,6,11,13,构建优先级队列,打印出整个数组的内容,并且体会不同输入顺序的情况之下数组内元素排序的差异;随机生成1000、10000、100000、1000000个数,分别构建优先级队列,画图描述不同情原创 2021-11-12 16:05:29 · 339 阅读 · 0 评论 -
算法导论02--矩阵乘法
一、目的1.熟悉算法设计的基本思想2.掌握Strassen算法的基本思想,并且能够分析算法性能二、内容与设计思想设计一个随机数矩阵生成器,输入参数包括N, s, t;可随机生成一个大小为N*N、数值范围在[s, t]之间的矩阵。编程实现普通的矩阵乘法;编程实现Strassen’s algorithm;在不同数据规模情况下(数据规模N=2^4, 2^8, 2^9, 2^10, 2^11)下,两种算法的运行时间各是多少;思考题:修改Strassen’s algorithm,使之适应矩阵规模N不原创 2021-11-12 16:03:12 · 550 阅读 · 0 评论 -
算法导论01--插入排序与归并排序
一、目的1.熟悉算法设计的基本思想2.掌握排序算法的基本思想,并且能够分析算法性能二、内容与设计思想设计一个数据生成器,输入参数包括N, s, t, T;可随机生成一个大小为N、数值范围在[s, t]之间、类型为T的数据集合;T包括三种类型(顺序递增、顺序递减、随机取值)#include<iostream>#include<ctime>#include<bits/stdc++.h>using namespace std;int main(){原创 2021-11-12 15:52:10 · 113 阅读 · 0 评论