自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(64)
  • 收藏
  • 关注

原创 SCAU算法期末考

2025-06-18 17:15:42 124 5

原创 18938 汉诺塔问题

汉诺塔(Tower of Hanoi),又称河内塔,是一个源于印度古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。由于条件是一次只能移动一个盘,且不允许大盘放在小盘上面,所以64个盘的移动次数是:18,446,744,073,709,551,615。

2025-06-05 09:52:41 319

原创 8587 行编辑程序

利用栈编写简单的行编辑程序:接受用户从终端输入的程序或数据,在输入过程中,允许用户输入出差错,并在发现有误时可以及时更正。例如:当用户发现刚刚键入的一个字符是错的时,可以补进一个退格符“#”,以表示前一个字符无效;如果发现当前键入的行内差错较多或难以补救,则可以键入一个退行符“@”,以表示当前行中的字符均无效。例如:假设从终端接受了这样两行字符: whli##ilr#e (s#*s) outcha@putchar(*s=#++);则实际有效的是下列两行: while (*s) putchar(*s++);

2025-06-05 09:51:17 646

原创 8586 括号匹配检验

利用栈编写满足下列要求的括号匹配检验程序:假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序随意,即([]())或[([][])]等为正确的格式,[(]或([())或(()])均为不正确的格式。输入一个包含上述括号的表达式,检验括号是否配对。本题给出部分check()函数,要求将check()函数补充完整,并完成整个程序。// Status是函数的类型,其值是函数结果状态代码,如OK等#define STACK_INIT_SIZE 10 // 存储空间初始分配量。

2025-06-05 09:50:08 627

原创 8585 栈的应用——进制转换

利用顺序栈的基本操作算法,编写满足下列要求的数制转换程序:对于输入的任意一个非负十进制整数,打印输出与其等值的八进制数。

2025-06-05 09:48:54 180

原创 8584 循环队列的基本操作

创建一个空的循环队列,并实现入队、出队、返回队列的长度、返回队头元素、队列的遍历等基本算法。请将下面的程序补充完整。// Status是函数的类型,其值是函数结果状态代码,如OK等#define MAXQSIZE 100 // 最大队列长度(对于循环队列,最大队列长度要减1)// 初始化的动态分配存储空间int front;// 头指针,若队列不空,指向队列头元素int rear;// 尾指针,若队列不空,指向队列尾元素的下一个位置}SqQueue;

2025-06-05 09:47:28 417

原创 8583 顺序栈的基本操作

创建一个空的顺序栈,并实现栈的入栈、出栈、返回栈的长度、返回栈顶元素、栈的遍历等基本算法。请将下面的程序补充完整。#define STACK_INIT_SIZE 100 // 存储空间初始分配量#define STACKINCREMENT 10 // 存储空间分配增量// 定义栈元素类型// Status是函数的类型,其值是函数结果状态代码,如OK等// 在栈构造之前和销毁之后,base的值为NULL// 栈顶指针// 当前已分配的存储空间,以元素为单位// 顺序栈。

2025-06-05 09:46:20 415

原创 19080 反转链表

一道经典的题目给定一个单链表的头结点L,长度为n,反转该链表后,返回新链表的表头。要求:空间复杂度 O(1) ,时间复杂度 O(n)。如当输入链表{1,2,3}时,经反转后,原链表变为{3,2,1},所以对应的输出为{3,2,1}。int data;/**< 尾插法创建单链表 *//**< 创建头结点 */i<=n;r=p;

2025-05-27 22:37:24 289

原创 8580 合并链表

线性链表的基本操作如下:int data;Status ListInsert_L(LinkList &L, int i, ElemType e) { // 算法2.9// 在带头结点的单链线性表L的第i个元素之前插入元素ep = L;int j = 0;while (p && j < i-1) { // 寻找第i-1个结点++j;if (!// i小于1或者大于表长// 生成新结点// 插入L中return OK;

2025-05-27 22:36:26 361

原创 8579 链式线性表的基本操作

编写算法,创建一个含有n个元素的带头结点的单链表L并实现插入、删除、遍历操作。本题目提供部分代码,请补全内容。int data;// 创建含有n个元素的单链表int i;ElemType e;// 先建立一个带头结点的单链表q = L;for (i=0;i<n;i++) {// 生成新结点// 请补全代码return OK;// 单链表遍历");// 请填空elsewhile(___________________________) // 请填空。

2025-05-27 22:35:01 676

原创 8579 链式线性表的基本操作

编写算法,创建一个含有n个元素的带头结点的单链表L并实现插入、删除、遍历操作。本题目提供部分代码,请补全内容。int data;// 创建含有n个元素的单链表int i;ElemType e;// 先建立一个带头结点的单链表q = L;for (i=0;i<n;i++) {// 生成新结点// 请补全代码return OK;// 单链表遍历");// 请填空elsewhile(___________________________) // 请填空。

2025-05-27 22:33:38 502

原创 8578 顺序表逆置

顺序表的基本操作代码如下:int *elem;int length;}SqList;{ // 算法2.3// 构造一个空的线性表L。if (!// 存储分配失败// 空表长度为0// 初始存储容量return OK;{ // 算法2.4// 在顺序线性表L的第i个元素之前插入新的元素e,// i的合法值为1≤i≤ListLength_Sq(L)+1// i值不合法if (L.length >= L.listsize) { // 当前存储空间已满,增加容量。

2025-05-27 22:30:12 693

原创 8577 合并顺序表

若线性表中数据元素相互之间可以比较,且数据元素在表中按值递增或递减,则称该表为有序表。编写算法,将两个非递减有序顺序表A和B合并成一个新的非递减有序顺序表C。

2025-05-27 22:25:30 125

原创 18747 关键路径

我们可以用有向无环图表述项目流程,把项目中的事件表述为结点,把活动表述成有权值的边。下面m行,每行3个整数a,b,x,表示点a到点b之间有一条长度为x的有向边。请你计算出这个项目的最早完成时间,也就是起点到收点的最长路径,即关键路径。第一行两个整数n和m,代表结点数量和边数量。(1<=n,m<=100)现在我们已知项目共有n个事件,起点为1,终点为n,m个活动。在一个工程项目里,多项工作可以同时进行。一个整数,起点到终点的最长路径.

2025-05-21 20:53:00 169

原创 数据结构 扑拓排序

计算机的专业课程间既有循序渐进的特点,相互间也存在着依赖关系(似乎其他专业也是这样......)。现在给你n门课程和m个课程间关系,请给出一个有效的学习次序。注意可能存在多门课程不依赖任何其他课程。

2025-05-21 20:36:51 305

原创 18732 最短路问题

现在有n个车站和m条直达公交线路,每条线路都有一个固定票价。作为一个窮人,你打算从车站1坐车到车站n,请计算下车站1到车站n的最少花费。如果车站1无法到达车站n,请输出-1。注意,在车站x和y之间可能存在不止一条线路。

2025-05-21 20:28:01 140

原创 模拟考 平衡树

平衡树并不是平衡二叉排序树。这里的平衡指的是左右子树的权值和差距尽可能的小。给出n个结点二叉树的中序序列w[1],w[2],…,w[n],请构造平衡树,并给出平衡树的先序序列。平衡树构造算法如下:(1)假设平衡树树根为序列中元素i,i左侧所有元素权值和S1=w[1]+w[2]+...+w[i-1],其右侧所有元素权值和S2=w[i+1]+w[i+2]+...w[n]。在选择树根i时要求让S1-S2的绝对值最小。

2025-05-20 17:37:12 747

原创 18448 最小生成树

一、定义生成树:在一个含有 n 个顶点的连通无向图中,选取 n−1 条边,使得所有顶点连通且无环,这样的子图称为生成树。最小生成树(MST):所有生成树中,边权之和最小的生成树称为最小生成树。二、适用场景求连通无向图中连接所有顶点的最小代价(边权和最小)。典型问题:城市间道路建设、网络布线、电路设计等。三、常用算法1. Kruskal 算法(贪心 + 并查集)// v[] 标记是否访问,d[] 记录最小距离v[1] = 1;// 从顶点 1 开始i <= n;// 初始化距离。

2025-05-20 09:14:43 617

原创 3 判断出栈序列(测验)

输入一个整数序列表示栈的压入顺序,请判断其他序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:所有序列的长度是相等的)

2025-05-13 17:45:01 143

原创 2 小球(树结构测验)

一颗满二叉树的每一个结点都有一个整数权值,现在一个小球从树根上下落,下落过程中它可以选择左右两个分支的任意一个,并获取结点的权值。请问当小球掉落到最后一层时,它能获取的最大值。如下图,二叉树序列11 4 2 5 1 9 3的最大值为22,小球依次获取11,2,9。第一行一个整数n,代表满二叉树结点数量。n<=100第二行n个整数,代表二叉树各结点权值。输出格式小球掉落到最后一层时,它能获取的最大值。输入样例711 4 2 5 1 9 3输出样例2

2025-05-13 17:36:37 513

原创 1 查找SCAU

一个全部由大写英文字母组成的字符串,请你确认字符串中是否包含子串"SCAU"。如果包含"SCAU",输出它在字符串中首次出现的下标;如果不包含"SCAU",输出"NO"。

2025-05-13 17:27:03 228

原创 8649 图的广度遍历

使用图的深度遍历实现的邻接表存储结构和基本操作函数,在此基础上实现图的广度遍历算法并加以测试。注意正确使用队列存储结构。

2025-05-13 09:23:03 411

原创 8648 图的深度遍历

表结点(ArcNode)adjvex:记录该弧所指向顶点的位置。nextarc:指向下一条弧的指针。info:指向权值的指针,用于存储网的权值。头结点(VNode)data:存储顶点信息,类型为字符串。firstarc:指向第一条依附该顶点的弧。图结构(ALGraph)vertices:头结点数组。vexnum和arcnum:分别表示顶点数和弧数。kind:图的类型(有向图、有向网、无向图、无向网)。

2025-05-13 09:06:35 721

原创 8647 实现图的存储结构

实现有向图的邻接矩阵存储结构。

2025-05-13 08:48:04 135

原创 8592 KMP算法

next数组:预处理模式串,记录每个前缀的最长相等前后缀长度。匹配逻辑:利用next数组在匹配失败时快速回溯模式串,避免主串指针回退。#define MAXSTRLEN 255 //用户可在255以内定义最大串长//0号单元存放串的长度// 算法4.7// 求模式串T的next函数值并存入数组next// 请补全代码next[1]=0;// 算法4.6// 利用模式串T的next函数求T在主串S中第pos个字符之后的位置// KMP算法。请补全代码++i;++j;

2025-05-12 17:41:33 838

原创 8623 龙龙

在比赛的时候,1Y(1 次AC)是很值得高兴的事情。但很多大牛总会因为很弱智的错误先WA 一次,再AC。而很多时候,这点罚时的差距使得他们与金牌无缘。弱智错误系列中最显著的就是忘记加龙龙。龙龙外国人叫它作long long,表示64位整数,输入与输出64位整数则可以使用例如scanf("%lld", &a)与printf("%lld", a)的形式完成。很多图论和动态规划的题目中,虽然题目说最后输出的答案是32 位的整数,但中间计算的过程有时会超过int,这时我们就要使用龙龙了。

2025-05-12 17:17:59 258

原创 18124 N皇后问题

有N*N的国际象棋棋盘,要求在上面放N个皇后,要求任意两个皇后不会互杀,有多少种不同的放法?

2025-05-12 17:00:03 174

原创 8608 实现二叉排序树的各种算法(2)

用函数实现如下二叉排序树算法:(1) 插入新结点(2) 前序、中序、后序遍历二叉树(3) 中序遍历的非递归算法(4) 层次遍历二叉树(5) 在二叉树中查找给定关键字(函数返回值为成功1,失败0)(6) 交换各结点的左右子树(7) 求二叉树的深度(8) 叶子结点数。

2025-05-06 18:03:58 2368

原创 19650 有重复无素排列问题

从键盘输入N个整数N<=10,要求输出这N个整数的全排列,且每一个排列当中,相邻两个数不能同为奇数。一行一个排列,按小到大的顺序输出。第二行N个整数,以空格分隔。

2025-05-06 17:55:40 202

原创 19412 N个不同整数全排列

由键盘输入N个不同的整数,输出这N个数的全部排列。

2025-05-06 17:52:42 374

原创 8646 基数排序

用函数实现基数排序,并输出每次分配收集后排序的结果。

2025-05-06 17:30:07 337

原创 8622 哈希查找

使用哈希函数:H(k)=3*k MOD length,并采用开放定址法处理冲突。试对输入的关键字序列构造哈希表,哈希表长度为length,求等概率情况下查找成功的平均查找长度,并设计构造哈希表的完整的算法。本题给出部分代码,请补全Hash函数和解决冲突的collison函数。#include"malloc.h" /* malloc()等 */#define NULLKEY -1 /*哈希表无元素时值为-1*/int length;/* 数据元素存储基址,动态分配数组 */int count;

2025-05-06 13:20:17 800

原创 8644 堆排序

用函数实现堆排序,并输出每趟排序的结果。

2025-05-06 13:18:07 795

原创 8643 简单选择排序

用函数实现简单选择排序,并输出每趟排序的结果。

2025-05-06 13:12:09 318

原创 8640 希尔(shell)排序

希尔排序的核心思想是把待排序的序列按照一定的增量分组,对每组使用直接插入排序算法进行排序;随着增量逐渐减小,每组包含的元素越来越多,当增量减至 1 时,整个序列就被合并为一组,再进行一次直接插入排序,此时排序完成。通过这种方式,希尔排序在排序前期可以让元素更快地移动到接近其最终位置,减少了后续直接插入排序时元素的移动次数,从而提高了排序效率。

2025-05-06 13:08:46 201

原创 8639 折半插入排序

折半插入排序的核心思想是在将一个新元素插入到已经排好序的序列中时,利用折半查找(二分查找)来确定该元素在有序序列中的插入位置,而不是像直接插入排序那样从后往前逐个比较。这样可以减少比较的次数,提高排序效率,但元素的移动次数并没有改变。

2025-05-06 13:05:02 330

原创 8638 直接插入排序

用函数实现直接插入排序,并输出每趟排序的结果。

2025-05-06 13:00:27 314

原创 8645 归并排序(非递归算法)

用函数实现归并排序(非递归算法),并输出每趟排序的结果。

2025-05-06 09:17:34 202

原创 8641 冒泡排序

用函数实现冒泡排序,并输出每趟排序的结果(要求当一趟冒泡过程中不再有数据交换,则排序结束)

2025-05-06 08:35:31 122

原创 8642 快速排序

用函数实现快速排序,并输出每次分区后排序的结果。

2025-05-06 08:31:46 282

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除