算法+数据结构题
算法+数据结构题
haoranyyy
这个作者很懒,什么都没留下…
展开
-
js快速排序、插入排序、选择排序
js快速排序、插入排序、选择排序原创 2024-05-18 19:38:23 · 153 阅读 · 0 评论 -
SWUST OJ#99 Euclid‘s Game
从黑板上两个不等的正数(M,N和M>N)开始。每走一步棋,玩家必须在棋盘上写下一个正数,等于棋盘上两个数字之差;这个号码必须是新的,也就是说,不同于所有已经在黑板上的号码。不能移动的玩家输掉这场游戏。在这个游戏中,你应该选择先移动还是后移动?根据上面的规则,有两个玩家在玩这个游戏。假设A先在黑板上写一个数字,然后B再写。你的任务是写一个程序来判断获胜者是a还是B。原创 2022-11-18 12:07:42 · 596 阅读 · 0 评论 -
SWUST OJ#254 翻煎饼
麦兜还知道同学们也很喜欢煎饼,为了表示他的诚意,他想让同学们先吃,麦兜最后吃,因此,麦兜想把煎饼按照从小到大的顺序叠放在一起,大的在最下面。煎饼师傅的方法是用铲子插入两块煎饼之间,然后将铲子上的煎饼翻一转,这样铲子上第一个煎饼就被翻到了顶上,而原来顶上的煎饼则被翻到了刚才插入铲子的地方。输入包括两行,第一行是一个整数n(1原创 2022-11-18 12:12:25 · 246 阅读 · 0 评论 -
SWUST OJ#640 Binary search
【代码】SWUST OJ#640 Binary search。原创 2022-11-18 12:11:08 · 203 阅读 · 0 评论 -
SWUST OJ#480 Locker doors
最初,所有储物柜的门都是关闭的。例如,你拨动每一个储物柜的门:如果门是关着的,你就打开它,如果是开着的,你就关上它。例如,在第一次通过后,每扇门都是打开的;在第二次通过时,你只需要切换偶数号的储物柜(#2,#4,…),这样在第二次通过后偶数号的门就会关闭,奇数号的门就会打开;第三次你要关闭3号储物柜的门(在第一次通过时打开),打开6号储物柜的门(在第二次通过时关闭),以此类推。最后一关后,哪些储物柜门是开着的,哪些是关着的?你的任务是写一个程序输出在最后一关后有多少门是打开的?原创 2022-11-18 12:09:41 · 467 阅读 · 0 评论 -
SWUST OJ#794 最近对问题
多组测试数据,第一行为测试数据组数n(0原创 2022-11-18 12:05:15 · 137 阅读 · 0 评论 -
SWUST OJ#539 Horner scheme(多项式)
【代码】SWUST OJ#539 Horner scheme(多项式)原创 2022-11-18 12:03:32 · 147 阅读 · 0 评论 -
SWUST OJ#538 Gaussian elimination
高斯原创 2022-11-18 12:01:47 · 242 阅读 · 2 评论 -
SWUST OJ#541 凸包面积
一天,他在玩钢笔的时候把墨水洒在了白色的墙上。再过一会,麦兜妈就要回来了,麦兜为了不让妈妈知道这件事情,就想用一个白色的凸多边形把墙上的墨点盖住。现在,给出了这些墨点的坐标,请帮助麦兜计算出覆盖这些墨点的最小凸多边形的面积。每组测试数据的第一行是一个正整数N(0< N < = 105),表明了墨点的数量。接下来的N行每行包含了两个整数Xi和Yi(0原创 2022-11-18 12:00:23 · 126 阅读 · 0 评论 -
SWUST OJ#541 排列的字典序问题
排列的字典序问题原创 2022-10-26 19:42:58 · 1095 阅读 · 1 评论 -
图的按录入顺序广度优先搜索
题目描述图的广度优先搜索类似于树的按层次遍历,即从某个结点开始,先访问该结点,然后访问该结点的所有邻接点,再依次访问各邻接点的邻接点。如此进行下去,直到所有的结点都访问为止。在该题中,假定所有的结点以“A”--“Z”中的若干字符表示,且要求结点的访问顺序根据录入的顺序进行访问。如果结点录入的顺序为HUEAK,要求从H开始进行广度优先搜索,则可能的搜索结果为:H->E->A->U->K.输入第一行为一个整数n,表示顶点的个数,第二行为n个大写字母构成的字符串,表示顶点,接原创 2022-05-22 00:43:11 · 63 阅读 · 0 评论 -
图的按录入顺序深度优先搜索
题目描述图的深度优先搜索类似于树的先根遍历,即从某个结点开始,先访问该结点,然后深度访问该结点的第一棵子树,依次为第二顶子树。如此进行下去,直到所有的结点都访问为止。在该题中,假定所有的结点以“A”至“Z”中的若干字符表示,且要求结点的访问顺序根据录入的顺序进行访问。如果结点录入的顺序为HUEAK,从H开始进行深度优先搜索,则可能的搜索结果为:H->A->K->U>E.输入第一行为一个整数n,表示顶点的个数,第二行为n个大写字母构成的字符串,表示顶点,接下来是为一个n*原创 2022-05-22 00:42:05 · 126 阅读 · 0 评论 -
有向图的邻接表存储强连通判断
题目描述假设有向图G采用邻接表存储,设计一个算法,判断图G是否是强连通图。若是则返回yes;否则返回no。(图中顶点信息为整型数据。)输入第一行为图中顶点的个数n;第二行为图的边的条数e;接下来e行,每行是一条边依附的两个顶点信息。输出强连通图输出yes,否则输出no.样例输入570 11 21 32 33 03 44 0样例输出yes#include<bits/stdc++.h>#define ll long long原创 2022-05-22 00:39:33 · 110 阅读 · 0 评论 -
输出利用先序遍历创建的二叉树的层次遍历序列
题目描述利用先序递归遍历算法创建二叉树并输出该二叉树的层次遍历序列。先序递归遍历建立二叉树的方法为:按照先序递归遍历的思想将对二叉树结点的抽象访问具体化为根据接收的数据决定是否产生该结点从而实现创建该二叉树的二叉链表存储结构。约定二叉树结点数据为单个大写英文字符。当接收的数据是字符"#"时表示该结点不需要创建,否则创建该结点。最后再输出创建完成的二叉树的层次遍历序列。需要注意输入数据序列中的"#"字符和非"#"字符的序列及个数关系,这会最终决定创建的二叉树的形态。输入输入为接受键盘输入的由大写原创 2022-05-22 00:00:13 · 1111 阅读 · 0 评论 -
利用二叉树中序及先序遍历确定该二叉树的后序序列
题目描述已知二叉树的中序和先序遍历可以唯一确定后序遍历、已知中序和后序遍历可以唯一确定先序遍历,但已知先序和后序,却不一定能唯一确定中序遍历。现要求根据输入的中序遍历结果及先序遍历结果,要求输出其后序遍历结果。输入输入数据占2行,其中第一行表示中序遍历结果,第二行为先序遍历结果。输出对测试数据,输出后序遍历结果。样例输入BFDAEGCABDFCEG样例输出FDBGECA前序遍历ABDFCEG加粗的A即为根节点,在中序遍历中BFDAEGC,这样即可确认节点A的原创 2022-05-22 00:00:43 · 250 阅读 · 0 评论 -
利用二叉树中序及后序遍历确定该二叉树的先序序列
题目描述已知二叉树的中序和先序遍历可以唯一确定后序遍历、已知中序和后序遍历可以唯一确定先序遍历,但已知先序和后序,却不一定能唯一确定中序遍历。现要求根据输入的中序遍历结果及后序遍历结果,要求输出其先序遍历结果。输入第一行为中序序列 第二行为后续序列输出输出为遍历二叉树得到的先序序列样例BFDAEGCFDBGECA样例输出ABDFCEGDCBFEGAHDCFGEBHA,A为根节点,在中序遍历中它的左边即为左子树(6个节点),右边为右子树(1个节点);在..原创 2022-05-21 23:33:03 · 214 阅读 · 0 评论 -
输出利用先序遍历创建的二叉树中的指定结点的子结点
题目描述利用先序递归遍历算法创建二叉树并输出该二叉树中指定结点的儿子结点。约定二叉树结点数据为单个大写英文字符。当接收的数据是字符"#“时表示该结点不需要创建,否则创建该结点。最后再输出创建完成的二叉树中的指定结点的儿子结点。注意输入数据序列中的”#“字符和非”#"字符的序列及个数关系,这会最终决定创建的二叉树的形态。输入输入用例分2行输入,第一行接受键盘输入的由大写英文字符和"#"字符构成的一个字符串(用于创建对应的二叉树),第二行为指定的结点数据。输出用一行输出该用例对应的二叉树中指定结原创 2022-05-21 21:58:03 · 69 阅读 · 0 评论 -
输出利用二叉树存储的普通树的度
题目描述普通树可转换成相应的二叉树(该二叉树的根结点一定缺少右儿子),反之亦然。故而可以根据相应的转换方法去统计某一二叉树对应的普通树的度。普通树的度为其结点儿子数的最大值。相应的二叉树可利用二叉树的先序递归遍历算法创建。先序递归遍历建立二叉树的方法为:按照先序递归遍历的思想将对二叉树结点的抽象访问具体化为根据接收的数据决定是否产生该结点从而实现创建该二叉树的二叉链表存储结构。约定二叉树结点数据为单个大写英文字符。当接收的数据是字符"#"时表示该结点不需要创建,否则创建该结点。最后再统计该二叉树对应的森原创 2022-05-21 21:32:38 · 81 阅读 · 0 评论 -
统计利用二叉树存储的森林中树的棵数
题目描述普通树及其构成的森林均可转换成相应的二叉树,反之亦然。故而可以根据相应的转换方法去统计某一二叉树对应的森林中树的棵数。相应的二叉树可利用先序递归遍历算法创建。先序递归遍历建立二叉树的方法为:按照先序递归遍历的思想将对二叉树结点的抽象访问具体化为根据接收的数据决定是否产生该结点从而实现创建该二叉树的二叉链表存储结构。约定二叉树结点数据为单个大写英文字符。当接收的数据是字符"#"时表示该结点不需要创建,否则创建该结点。最后再统计该二叉树对应的森林中树的棵数。需要注意输入数据序列中的"#"字符和非"#原创 2022-05-21 21:16:30 · 400 阅读 · 0 评论 -
交换二叉树的孩zi结点
题目描述编程程序实现将二叉树中所有结点的左右孩子互换。输入二叉树的先序序列(输入先序序列建立二叉树)。输出第一行为交换后的二叉树的中序序列第二行为交换后的二叉树的先序序列样例输入ABD###C###样例输出CABDACBD#include<bits/stdc++.h>#define ll long long//#define int ll#define pii pair<int,int>#define mem(a,b) m原创 2022-05-21 21:15:34 · 59 阅读 · 0 评论 -
平衡二叉树的判定
题目描述编写程序判断给定的二叉树是否是平衡二叉树。输入二叉树的先序序列。输出如果是平衡二叉树,输出yes!,否者输出no!样例输入AB##C##样例输出yes!平衡二叉树(Balanced Binary Tree),具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。#include<bits/stdc++.h>#define ll long long//#define int ll原创 2022-05-21 20:49:16 · 164 阅读 · 0 评论 -
最小堆的判断
题目描述编写程序判断以下给出的整数序列是否为最小堆。输入第一行是元素的个数n;第二行是n个整数序列。输出如果是小根堆,输出Yes,否者输出No。样例输入10100 86 48 73 35 39 42 57 66 21样例输出No#include<bits/stdc++.h>#define ll long long//#define int ll#define pii pair<int,int>#define mem(a,...原创 2022-05-21 15:11:57 · 247 阅读 · 0 评论 -
堆排序算法
题目描述编写程序堆排序算法。按照从小到大的顺序进行排序,测试数据为整数。输入第一行是待排序数据元素的个数; 第二行是待排序的数据元素。(提示:用小根堆)输出一趟堆排序的结果。样例输入1050 36 41 19 23 4 20 18 12 22样例输出4 12 20 18 22 41 50 36 19 23父结点索引:(i-1)/2(这里计算机中的除以2,省略掉小数)左孩子索引:2*i+1右孩子索引:2*i+2大顶堆:每个节点的值都大于或者等于它的左右子节点.原创 2022-05-21 15:00:51 · 256 阅读 · 0 评论 -
哈希表(链地址法处理冲突)
题目描述采用除留余数法(H(key)=key %n)建立长度为n的哈希表,处理冲突用链地址法。建立链表的时候采用尾插法。输入第一行为哈西表的长度m;第二行为关键字的个数n;第三行为关键字集合;第四行为要查找的数据。输出如果查找成功,输出该关键字所在哈希表中的地址和比较次数;如果查找不成功,输出-1。样例输入131316 74 60 43 54 90 46 31 29 88 77 78 7916样例输出3,1#include<bits/stdc++.h>#.原创 2022-05-21 14:06:19 · 443 阅读 · 0 评论 -
输出用先序遍历创建的二叉树是否为完全二叉树的判定结果
题目描述利用先序递归遍历算法创建二叉树并判断该二叉树是否为完全二叉树。完全二叉树只能是同深度的满二叉树缺少最后一层倒数连续个叶子结点。先序递归遍历建立二叉树的方法为:按照先序递归遍历的思想将对二叉树结点的抽象访问具体化为根据接收的数据决定是否产生该结点从而实现创建该二叉树的二叉链表存储结构。约定二叉树结点数据为单个大写英文字符。当接收的数据是字符"#“时表示该结点不需要创建,否则创建该结点。最后判断创建完成的二叉树度是否为完全二叉树。需要注意输入数据序列中的”#“字符和非”#"字符的序列及个数关系,这会最原创 2022-05-21 13:40:23 · 469 阅读 · 0 评论 -
输出利用先序遍历创建的二叉树中的指定结点的双亲结点
叉树中指定结点的双亲结点。约定二叉树结点数据为单个大写英文字符。当接收的数据是字符“#”时表示该结点不需要创建,否则创建该结点。最后再输出创建完成的二叉树中的指定结点的双亲结点。注意输入数据序列中的“#”字符和非“#”字符的序列及个数关系,这会最终决定创建的二叉树的形态。输入输入用例分2行输入,第一行接受键盘输入的由大写英文字符和“#”字符构成的一个字符串(用于创建对应的二叉树),第二行为指定的结点数据。输出用一行输出该用例对应的二叉树中指定结点的双亲结点。若相应双亲结点不存在则以“#”代替。样例原创 2022-05-20 23:56:07 · 319 阅读 · 0 评论 -
输出利用先序遍历创建的二叉树中的指定结点的度
题目描述利用先序递归遍历算法创建二叉树并输出该二叉树中指定结点的度。约定二叉树结点数据为单个大写英文字符。当接收的数据是字符“#”时表示该结点不需要创建,否则创建该结点。最后再输出创建完成的二叉树中的指定结点的度。注意输入数据序列中的字符“#”和非“#”字符的序列及个数关系,这会最终决定创建的二叉树的形态。输入输入用例分2行输入,第一行接受键盘输入的由大写英文字符和“#”字符构成的一个字符串(用于创建对应的二叉树),第二行为指定的结点数据。输出用一行输出该用例对应的二叉树中指定结点的度。原创 2022-05-20 23:33:00 · 161 阅读 · 0 评论 -
判断给定有向图是否存在回路(拓扑排序)
题目描述判断给定有向图是否存在回路。输入第一行为图中顶点的个数n; 第二行为途中弧度条数e;第三行为顶点信息;接着e行为e条弧依附的两个顶点。输出该图是否存在回路,是输出yes,不是输出no。样例输入44A B C DA BA CB DC D样例输出no#include<bits/stdc++.h>#define endl '\n'#define N 100005using namespace std;vector<int> a.原创 2022-05-20 22:39:18 · 603 阅读 · 0 评论 -
有向图的邻接矩阵存储根计算
若有向图中存在一个顶点v,从v可以通过路径到达图中其他所有顶点,那么称v为该有向图的根。假设图G采用邻接矩阵存储,求有向图的所有根。输入第一行为一个整数n,表示顶点的个数(顶点编号为0到n-1),接下来是为一个n*n大小的整数矩阵,表示图的邻接关系。输出有向图的所有根。样例输入50 1 0 0 00 0 1 1 00 0 0 1 01 0 0 0 11 0 0 0 0样例输出01234#include<bits/stdc++.h>#define ll long原创 2022-05-19 23:38:14 · 320 阅读 · 0 评论 -
邻接矩阵存储简单路径
假设无向图G采用邻接矩阵存储,设计一个算法,输出图G中从顶点u到v的所有简单路径。input简单路径是指路径上的顶点不重复。第一行为一个整数n,表示顶点的个数(顶点编号为0到n-1),第二行表示顶点u和v的编号,接下来是为一个n*n大小的矩阵,表示图的邻接关系。数字为0表示不邻接,1表示不邻接。output输出图G中从顶点u到v的所有简单路径。样例输入50 30 1 0 1 11 0 1 1 00 1 0 1 11 1 1 0 11 0 1 1 0样例输出原创 2022-05-19 23:07:42 · 329 阅读 · 0 评论 -
求最小生成树 Prim算法
题目:求出给定无向带权图的最小生成树,图的定点为字符型。输入:第一行为图的顶点个数n第二行为图的边的条数e接着e行为依附于一条边的两个顶点和边上的权值。输出:最小生成树中的边。样例输入:6 10ABCDEFA B 6A C 1A D 5B C 5C D 5B E 3E C 6C F 4F D 2E F 6样例输出:(A,C)(C,F)(F,D)(C,B)(B,E)#include<bits/stdc++.h>#defi.原创 2022-05-18 21:46:35 · 251 阅读 · 0 评论