数据结构
数据结构学习
_Lichtung_
stay hungry, stay foolish
展开
-
N皇后问题
参考北京大学算法慕课慕课链接n皇后问题:输入整数n,要求n个国际象棋的皇后,摆在n*n的棋盘上,互相不能攻击,输出全部方案。 定义一维数组queenPos记录每一行皇后的位置,即queenPos[x] = y表示第x行的皇后在第y列上。(行、列下标都从0开始) 定义函数NQueen(int k), 此函数代表求第k行皇后的位置,调用此函数时前k-1行皇后的位置已经确定。 main函数内调用NQueen(0),从第0行开始求解。 NQueen函数首先判断出口,若k==N,表示前N-1行的位置原创 2020-08-18 09:55:34 · 240 阅读 · 0 评论 -
7-9 旅游规划 (25分)
有了一张自驾旅游路线图,你会知道城市间的高速公路长度、以及该公路要收取的过路费。现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径。如果有若干条路径都是最短的,那么需要输出最便宜的一条路径。输入格式:输入说明:输入数据的第1行给出4个正整数N、M、S、D,其中N(2≤N≤500)是城市的个数,顺便假设城市的编号为0~(N−1);M是高速公路的条数;S是出发地的城市编号;...原创 2020-03-23 21:26:49 · 401 阅读 · 0 评论 -
1076 Forwards on Weibo (30分)
Weibo is known as the Chinese version of Twitter. One user on Weibo may have many followers, and may follow many other users as well. Hence a social network is formed with followers relations. When a ...原创 2020-03-23 10:26:56 · 147 阅读 · 0 评论 -
7-7 六度空间 (30分)
参考浙江大学数据结构慕课“六度空间”理论又称作“六度分隔(Six Degrees of Separation)”理论。这个理论可以通俗地阐述为:“你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过五个人你就能够认识任何一个陌生人。”假如给你一个社交网络图,请你对每个节点计算符合“六度空间”理论的结点占结点总数的百分比。输入格式:输入第1行给出两个正整数,分别表示社交网络图的结...原创 2020-03-22 20:26:05 · 533 阅读 · 0 评论 -
排序算法总结(选择、冒泡、插入、希尔、堆、归并、快速排序)
根据浙大数据结构慕课和《算法设计与分析基础》整理规定按照从小到大顺序排序。前提:void X_Sort(int A[ ], int N)主函数:int main(){ int N; cin>>N; int a[N]; for(int i = 0;i<N;i++){ cin>>a[i]; } X_Sort(a,N);//排序函数 cou...原创 2020-03-11 16:25:44 · 268 阅读 · 0 评论 -
《算法神探》读书笔记
前几天读了《算法神探》,挺有意思一本书,使我对数据结构有了更深理解。笔记如下:一、二分搜索1、原理:请注意,通过这几次的操作,此时虽然下界已经是目标值了(v=15),但是我们仍需要继续搜索,直到中间值指向目标值。这是因为二分搜索是对中间值进行判定,而不会判定上界和下界是否是目标值。如果目标值不在数组中会发生什么呢?在搜索过程中,上下界之间的距离会越来越近,直到它们之间没有任何还未检查...原创 2020-02-18 21:58:08 · 260 阅读 · 0 评论 -
7-5 Tree Traversals Again (25分)
An inorder binary tree traversal can be implemented in a non-recursive way with a stack. For example, suppose that when a 6-node binary tree (with the keys numbered from 1 to 6) is traversed, the stac...原创 2020-01-21 18:40:49 · 353 阅读 · 0 评论 -
7-8 File Transfer (25分)
参考浙大数据结构慕课考察并查集。原创 2020-01-21 17:03:23 · 317 阅读 · 0 评论 -
7-5 堆中的路径 (25分)
将一系列给定数字插入一个初始为空的小顶堆H[]。随后对任意给定的下标i,打印从H[i]到根结点的路径。输入格式:每组测试第1行包含2个正整数N和M(≤1000),分别是插入元素的个数、以及需要打印的路径条数。下一行给出区间[-10000, 10000]内的N个要被插入一个初始为空的小顶堆的整数。最后一行给出M个下标。输出格式:对输入中给出的每个下标i,在一行中输出从H[i]到根结点的路径上...原创 2020-01-21 10:49:08 · 307 阅读 · 0 评论 -
7-4 是否同一棵二叉搜索树 (25分)
给定一个插入序列就可以唯一确定一棵二叉搜索树。然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到。例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树,都得到一样的结果。于是对于输入的各种插入序列,你需要判断它们是否能生成一样的二叉搜索树。输入格式:输入包含若干组测试数据。每组数据的第1行给出两个正整数N (≤10)和L,分别是每个序列插入元素的个数和需要检查的...原创 2020-01-20 17:41:57 · 243 阅读 · 0 评论 -
7-3 树的同构 (25分)
浙大慕课学习给定两棵树T1和T2。如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是“同构”的。例如图1给出的两棵树就是同构的,因为我们把其中一棵树的结点A、B、G的左右孩子互换后,就得到另外一棵树。而图2就不是同构的。图一:图二:现给定两棵树,请你判断它们是否是同构的。输入格式:输入给出2棵二叉树树的信息。对于每棵树,首先在一行中给出一个非负整数N (≤10),即该树...原创 2020-01-17 17:09:59 · 320 阅读 · 0 评论 -
7-22 堆栈模拟队列 (25分)
题目:设已知有两个堆栈S1和S2,请用这两个堆栈模拟出一个队列Q。所谓用堆栈模拟队列,实际上就是通过调用堆栈的下列操作函数:int IsFull(Stack S):判断堆栈S是否已满,返回1或0;int IsEmpty (Stack S ):判断堆栈S是否为空,返回1或0;void Push(Stack S, ElementType item ):将元素item压入堆栈S;Element...原创 2020-01-17 13:20:15 · 1076 阅读 · 0 评论 -
7-20 表达式转换 (25分)
算术表达式有前缀表示法、中缀表示法和后缀表示法等形式。日常使用的算术表达式是采用中缀表示法,即二元运算符位于两个运算数中间。请设计程序将中缀表达式转换为后缀表达式。输入格式:输入在一行中给出不含空格的中缀表达式,可包含+、-、、\以及左右括号(),表达式不超过20个字符。输出格式:在一行中输出转换后的后缀表达式,要求不同对象(运算数、运算符号)之间以空格分隔,但结尾不得有多余空格。输入样...原创 2020-01-16 17:02:40 · 3464 阅读 · 0 评论 -
7-2 一元多项式的乘法与加法运算
设计函数分别求两个一元多项式的乘积与和。输入格式:输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。输出格式:输出分2行,分别以指数递降方式输出乘积多项式以及和多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。零多项式应输出0 0。输入样例:4 3 4 -5 2 6 1 ...原创 2020-01-16 14:49:37 · 246 阅读 · 0 评论 -
01-复杂度3 二分查找
浙江大学慕课本题要求实现二分查找算法。函数接口定义:Position BinarySearch( List L, ElementType X );其中List结构定义如下:typedef int Position;typedef struct LNode List;struct LNode {ElementType Data[MAXSIZE];Position Last; / 保...原创 2020-01-15 16:05:37 · 129 阅读 · 0 评论 -
01-复杂度2 Maximum Subsequence Sum(浙江大学数据结构编程题2)
思路:用“在线处理”算法,见最大子列和问题设置head和rear分别存放最大子列所对应的首项和尾项的下标。设置head1临时存放正在求和的子列的首项,若正在求和的子列的和大于max,则将head1赋值给head。初始化rear为-1,可根据rear的值去判断是否全是负数。若数列全为负数,则rear始终为-1,否则rear不为-1。注意:1、让你输出的是numbers!是数而不是对应的下...原创 2020-01-14 22:36:35 · 143 阅读 · 0 评论 -
最大子列和问题
浙江大学数据结构慕课学习给定K个整数组成的序列{ N1, N2, …, NK },“连续子列”被定义为{ Ni, Ni+1, …, Nj },其中 1≤i≤j≤K。“最大子列和”则被定义为所有连续子列元素的和中最大者。例如给定序列{ -2, 11, -4, 13, -5, -2 },其连续子列{ 11, -4, 13 }有最大的和20。现要求你编写程序,计算给...原创 2020-01-14 21:38:31 · 229 阅读 · 0 评论