
数据结构与算法题目集
中文题和英文题
SYaoJun
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
《数据结构编程实验》题目汇总
题目汇总原创 2022-03-18 08:15:50 · 457 阅读 · 0 评论 -
7-10 Saving James Bond - Easy Version (25分)
借鉴代码注意临界值,如果007可以跳跃的长度与两个点之间的距离刚好相等,则也可以跳。这个代码对借鉴代码有点改进。#include <cstdio>#include <cmath>#include <iostream>#include <string>#include <vector>#include <cstring...原创 2019-12-06 11:47:40 · 230 阅读 · 0 评论 -
7-21 求前缀表达式的值 (25分)
题目描述算术表达式有前缀表示法、中缀表示法和后缀表示法等形式。前缀表达式指二元运算符位于两个运算数之前,例如2+3*(7-4)+8/4的前缀表达式是:+ + 2 * 3 - 7 4 / 8 4。请设计程序计算前缀表达式的结果值。输入格式:输入在一行内给出不超过30个字符的前缀表达式,只包含+、-、*、/以及运算数,不同对象(运算数、运算符号)之间以空格分隔。输出格式:输出前缀表达式的运算...原创 2019-12-06 09:25:31 · 1197 阅读 · 0 评论 -
7-7 Complete Binary Search Tree (30 分)
BST+CBT+二叉树层序遍历按照从小到大的顺序插入开两个数组,第一个数组arr用来保存正序的数据, 第二数组brr用来记录BST插入时,在CBT中对应的下标。由于CBT左右子树满足二倍和二倍加1的关系,所以从小大输出时刚好满足层序遍历。当arr最小值插入时,对应着arr中第一个元素,而这个元素被存放在层序遍历数组的第r个下标上。#include <cstdio>#inc...原创 2019-11-25 17:41:31 · 891 阅读 · 0 评论 -
7-21 Counting Leaves (30 分)
树+DFS目标:统计每层的叶子节点个数主要是存储树的父子关系,然后统计。#include <cstdio>#include <iostream>#include <algorithm>#include <vector>#include <string.h>using namespace std;const int N =...原创 2019-11-24 22:59:37 · 314 阅读 · 0 评论 -
7-20 Binary Search Tree (25 分)
二叉搜索树把两棵树都建好再比较#include <cstdio>#include <iostream>#include <algorithm>using namespace std;struct tree{ int val; tree* left, *right; tree(int x){ val = x; left = right ...原创 2019-11-24 11:27:38 · 384 阅读 · 0 评论 -
7-22 堆栈模拟队列 (25 分)
题目链接两个栈模拟队列小容量栈:输入栈大容量栈:输出栈输入时小栈大栈都空时,优先放入小栈如果小栈满了,且大栈为空,就倒如大栈中如果小栈满了,且大栈已经倒过一次了,说明真的满了,即此队列的最大容量为小栈容量的两倍输出时如果小栈大栈都有数据,优先输出大栈的数据如果大栈空,而小栈有数据,则把小栈中的数倒入大栈中,取出栈底的值后输出,然后将剩余的数又倒回小栈中。小栈大栈都空时,...原创 2019-11-17 15:34:45 · 345 阅读 · 0 评论 -
7-3 Pop Sequence (25 分)
题目链接栈模拟#include <cstdio>#include <algorithm>#include <string>#include <iostream>#include <unordered_set>#include <cctype>#include <stack>using namesp...原创 2019-11-16 17:02:08 · 462 阅读 · 0 评论 -
7-44 基于词频的文件相似度 (30 分)
集合数组先检查输入的单词是否分割正确,再进行统计。注意点:单词大小写不敏感单词长度大于2且小于等于10,以非字母分割。两个文件的单词总量如果有相同的单词,只统计一次。#include <cstdio>#include <algorithm>#include <string>#include <iostream>#include...原创 2019-11-16 14:00:25 · 662 阅读 · 0 评论 -
7-45 航空公司VIP客户查询 (25 分)
结构体排序题注意点:里程数需要累加,有可能某个会员不止一次乘坐飞机输入输出最好用scanf不然会超时#include <cstdio>#include <algorithm>#include <string>#include <iostream>#include <unordered_map>using namesp...原创 2019-11-16 11:37:31 · 732 阅读 · 0 评论 -
7-18 银行业务队列简单模拟 (25 分)
简单模拟#include <iostream>#include <queue>using namespace std;int main(){ int n, x; queue<int> A, B; cin>>n; for(int i = 0; i < n; i++){ cin>>x; if(x&1) A...原创 2019-10-24 14:12:25 · 1034 阅读 · 0 评论 -
7-26 Windows消息队列 (25 分)
#include <iostream>#include <cstdio>#include <stack>#include <string>#include <cctype>#include <queue>#include <vector>#include <unordered_map>u...原创 2019-10-20 23:09:18 · 434 阅读 · 0 评论 -
7-28 搜索树判断 (25 分)
由于是前序,所以根节点始终是第一个,不管镜像与否,都可以直接建树。#include <iostream>#include <cstdio>#include <stack>#include <string>#include <cctype>#include <vector>#include <unordere...原创 2019-10-20 22:47:15 · 550 阅读 · 0 评论 -
7-43 字符串关键字的散列映射 (25 分)
哈希散列平方探测法1.平方是先正再负2.探测的基准是以起始位置为准3.开始时不能取模#include <iostream>#include <cstdio>#include <stack>#include <string>#include <cctype>#include <cstring>#include...原创 2019-10-20 21:53:02 · 1081 阅读 · 0 评论 -
7-13 统计工龄 (20 分)
#include<cstdio>const int maxn=1e5+5;int hash[maxn]={0};int main(){ int n,num; scanf("%d",&n); for(int i=0;i<n;i++){ scanf("%d",&num); hash[num]++; } for(int i=0;i<max...原创 2019-10-20 16:09:18 · 338 阅读 · 0 评论 -
7-12 排序 (25 分)
#include<cstdio>#include<algorithm>using namespace std;const int maxn=1e5+5;int arr[maxn];int main(){ int n; scanf("%d",&n); for(int i=0;i<n;i++){ scanf("%d",&arr[i]);...原创 2019-10-20 16:07:51 · 350 阅读 · 0 评论 -
浙江大学《数据结构》编程题题解
数据结构与算法题目集(中文)题目类型7-1 最大子列和问题 (20 分)动态规划7-2 一元多项式的乘法与加法运算 (20 分)模拟7-3 树的同构 (25 分)树7-4 是否同一棵二叉搜索树 (25 分)二叉搜索树7-5 堆中的路径 (25 分)小根堆7-6 列出连通集 (25 分)深搜广搜7-7 六度空间 (30 分)广搜...原创 2019-10-20 16:07:25 · 1253 阅读 · 1 评论 -
7-42 整型关键字的散列映射 (25 分)
注意:重复出现的关键字,需要输出第一次在哈希表中的位置,不需要重新探测。#include <iostream>#include <cstdio>#include <algorithm>#include <queue>#include <vector>#include <cstring>#include <...原创 2019-10-20 15:49:18 · 682 阅读 · 0 评论 -
7-41 PAT排名汇总 (25 分)
这种排序题做过好多遍了主要是需要注意相同成绩的人具有相同名次但是输出的时候如果成绩相同需要将学号小的先输出#include <iostream>#include <cstdio>#include <algorithm>#include <queue>#include <vector>#include <cstring...原创 2019-10-20 15:16:40 · 964 阅读 · 0 评论 -
7-36 社交网络图中结点的“重要性”计算 (30 分)
层次遍历BFS并查集判断#include <iostream>#include <cstdio>#include <algorithm>#include <queue>#include <vector>#include <cstring>using namespace std;const int N = 1e...原创 2019-10-20 14:34:44 · 594 阅读 · 0 评论 -
7-35 城市间紧急救援 (25 分)
这道题已经做了很多遍了,但是这次做的时候还是出现了一个bug主要是没有注意scanf的输入特性,读入边的时候,不能同时处理边读入边使用的行为。必须先读完然后再使用。#include <iostream>#include <cstdio>#include <algorithm>#include <queue>#include <ve...原创 2019-10-20 13:32:00 · 783 阅读 · 0 评论 -
7-34 任务调度的合理性 (25 分)
拓扑排序#include <iostream>#include <cstdio>#include <algorithm>#include <queue>#include <vector>using namespace std;const int N = 105;int ind[N] = {0};int n;vector...原创 2019-10-19 23:25:01 · 529 阅读 · 0 评论 -
7-13 Insert or Merge (25 分)
https://www.nowcoder.com/pat/2/problem/267 吐槽:水题#include#includechar str[50];int change(int sum,int x){ memset(str,0,sizeof(str)); int k = 0,ans = 0; do{ int tmp = sum % x;原创 2018-01-26 15:59:44 · 430 阅读 · 1 评论 -
7-17 Hashing (25 分)
//1.判断给定的table size是否为素数,不是的话寻找大于该数最小的素数作为替代//2.平方探测#include<bits/stdc++.h>using namespace std;const int maxn = 1e5+5;int H[maxn]={0};bool isPrime(int x){ if(x<=1) return false; int s...原创 2019-10-13 01:10:23 · 237 阅读 · 0 评论 -
7-2 Reversing Linked List (25 分)
#include<bits/stdc++.h>using namespace std;const int maxn=1e5+5;struct node{ int add,value,index,next;}E[maxn];bool cmp(node a, node b){ return a.index < b.index;}bool cmp1(node a, ...原创 2019-10-13 01:09:26 · 362 阅读 · 0 评论 -
7-33 地下迷宫探索 (30 分)
DFS + 回溯#include <iostream>#include <vector>#include <string>#include <cmath>#include <algorithm>#include <queue>#include <cstdio>#include <cctype&...原创 2019-10-12 16:14:41 · 253 阅读 · 0 评论 -
7-49 打印学生选课清单 (25 分)
这道题告诉我们不要随便用cin和cout因为真的会超时。#include<cstdio>#include<iostream>#include<vector>#include<unordered_map>#include<set>#include<algorithm>using namespace std;int...原创 2019-10-12 15:42:11 · 552 阅读 · 0 评论 -
7-31 笛卡尔树 (25 分)
二叉搜索树的判断方式和小根堆的判断方式#include <iostream>#include <vector>#include <string>#include <cmath>#include <algorithm>#include <queue>#include <cstdio>#include ...原创 2019-10-12 14:57:55 · 306 阅读 · 0 评论 -
7-32 哥尼斯堡的“七桥问题” (25 分)
无向图欧拉图的判断1.连通2.节点度数为偶数注意:如果数据量较大尽量用scanf来读入,不然就是会超时。#include <iostream>#include <vector>#include <string>#include <cmath>#include <algorithm>#include <queue&...原创 2019-10-12 14:20:55 · 479 阅读 · 0 评论 -
7-5 堆中的路径 (25 分)
注意:题目说的是插入小顶堆所以每次插入之后都一定是小顶堆,而不是都插入完成之后再去堆化为小顶堆。每次插入一个元素以后,都要和它的父节点判断,如果当前的节点比父节点值更小,就跟父节点交换,同时对父节点进行递归处理,直到到达地根节点。输出也很简单,只需要每次不断的指向父节点即可。#include <iostream>#include <vector>#includ...原创 2019-10-12 14:00:07 · 262 阅读 · 0 评论 -
7-4 是否同一棵二叉搜索树 (25 分)
题意:给出二叉排序树的插入序列,判断给出的这些序列跟第一个序列是否是同一棵树。重点:学会创建二叉搜索树学会判断两棵树是否是相同的两棵树#include <iostream>#include <vector>#include <string>#include <cmath>#include <algorithm>#inc...原创 2019-10-12 13:36:59 · 331 阅读 · 0 评论 -
7-39 魔法优惠券 (25 分)
两次判断不能有重叠的部分#include <iostream>#include <vector>#include <string>#include <cmath>#include <algorithm>#include <queue>#include <cstdio>#include <cct...原创 2019-10-11 22:21:39 · 402 阅读 · 0 评论 -
7-29 修理牧场 (25 分)
哈夫曼树的经典题#include <iostream>#include <vector>#include <string>#include <cmath>#include <algorithm>#include <queue>#include <cstdio>#include <cctype&...原创 2019-10-11 20:53:26 · 334 阅读 · 0 评论 -
7-3 树的同构 (25 分)
主要知识点1.根据输入格式建树,由于数据比较少,可以不适用传统的指针建树,可以建立静态的树,以下标作为查找。2.比较两棵树是否是异构树,使用递归的方式。在leetcode上面有类似的题,是比较两棵树是否是相同的树,这里异构的树稍微扩展了一下。#include <iostream>#include <vector>#include <string>#i...原创 2019-10-11 20:40:00 · 353 阅读 · 0 评论 -
7-38 寻找大富翁 (25 分)
注意:N有可能比M小思路:使用选择排序或者冒泡排序,遍历M趟,一边遍历,一边输出。#include<bits/stdc++.h>using namespace std;const int maxn=1e6+5;int arr[maxn];int main(){ int n,m; scanf("%d%d",&n,&m); for(int i=0;i<...原创 2019-05-16 10:35:40 · 616 阅读 · 0 评论 -
7-37 模拟EXCEL排序 (25 分)
排序入门题#include<bits/stdc++.h>using namespace std;const int maxn=1e5+5;struct stu{ int no; char name[10]; int score; }Node[maxn];bool cmp1(stu a, stu b){ return a.no <b.no;}bool cm...原创 2019-05-16 10:10:32 · 1150 阅读 · 3 评论 -
7-6 列出连通集 (25 分)
DFS深度优先搜索BFS广度优先搜索经典入门题邻接矩阵#include<cstdio>#include<cstring>#include<vector>#include<queue>using namespace std;int n,m;int G[12][12];int vis[12];void DFS(int x){ ...原创 2019-02-12 16:23:22 · 819 阅读 · 0 评论 -
7-7 六度空间 (30 分)
BFS广度优先搜索方法一计算每层的深度,然后统计深度小于等于6的数量。#include<bits/stdc++.h>#include<queue>#include<vector>#define INF 0x3f3f3f3f using namespace std;const int maxn=10005;int vis[maxn];int d...原创 2019-02-12 14:48:46 · 786 阅读 · 0 评论 -
7-25 朋友圈 (25 分)
并查集经典入门题虽然简单,但是我觉得我还是学到了很多。首先,加深了我对并查集的理解。每个集合合并的时候,总是把第一个值作为父节点是会产生错误的。例如:输入样例7 43 1 2 32 4 23 5 6 71 6输出样例4因此合并完之后,如果要考查每个结点属于哪个集合,还在再find一遍它压缩之后的根结点。其次,这个代码参考了另一个大神的写法,其中包含很多有用的技巧,比如散...原创 2019-02-12 11:41:14 · 514 阅读 · 0 评论 -
7-1 最大子列和问题 (20 分)
dp[i]表示以A[i]作为末尾的连续序列的最大和,即A[i]必须作为连续序列的末尾。动态规划经典入门题#include<cstdio>#include<algorithm>using namespace std;const int maxn=10010;int A[maxn],dp[maxn];int main(){ int n; scanf("%d",...原创 2019-02-11 17:32:17 · 587 阅读 · 0 评论