- 博客(11)
- 收藏
- 关注
原创 NOJ算法实验回眸
11月7号晚上18:30,西工大算法实验期末考试开始,那天是立冬,天气有了些凉意。五天已过,虽然成绩尚未公布,结果却已是心知肚明,0.5学分虽然非常微小,但算法实验的意义却远比这一点学分重要得多。下面,对这次算法实验考试题目进行回顾。一,二分查找...
2021-11-12 16:04:03
1494
2
原创 NOJ算法实验二-1143-字母转换
描述:通过栈交换字母顺序。给定两个字符串,要求所有的进栈和出栈序列(i表示进栈,o表示出栈),使得字符串1在求得的进出栈序列的操作下,变成字符串2。输出结果需满足字典序。例如TROT 到 TORT:[i i i i o o o oi o i i o o i o]这一题用到的算法为回溯,其中有一些简单的栈的应用,思路难度不大,但是要注意细节。首先要设立三个字符串,分别是start(输入),mid(栈)和ans(由出栈构成的字符串),每一次可以入栈(start的一个字符压入mid)或者出栈(mi
2021-10-04 16:15:02
606
原创 算法-洛谷-P1784 数独
题目描述数独是根据 9×9 盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一列、每一个粗线宫内的数字均含1−9,不重复。每一道合格的数独谜题都有且仅有唯一答案,推理方法也以此为基础,任何无解或多解的题目都是不合格的。题目来源于洛谷网,网址https://www.luogu.com.cn/problem/P1784。此题为典型的**深度优先搜索(DFS)**题目,同时用到回溯的思想,大体思路是从第一个空格开始,不断递归搜索,一直搜索到最后一个空格即可。代码如下:#include <
2021-09-08 21:13:02
357
原创 算法-Boolean Expressions
题目:给出若干布尔表达式,输出其化简结果,如下图:这一题是北京大学程序设计与算法(二)暑期测验的第五题,下面逐层分析。布尔表达式可以看作若干项的“或”(优先级最低)项可以看作若干因子的“与”(优先级在“或”之上)因子有三种情况:① V或F② (表达式)③ !因子理清了这些思路后,写出代码便不那么难了,代码如下:#include <stdio.h>#include <stdlib.h>#include <string.h>char s[100
2021-08-15 17:51:42
657
原创 数据结构-在二叉树中查找给定的结点并输出到该结点的路径
编写函数,实现在给定的二叉树中查找指定的结点(一定找得到),并输出到该结点的路径上的所有结点。这是这学期数据结构期末考试编程大题的第一题,题目本身并不难,但考试时在这题上花了不少时间,写得也不是很好,时隔一个多月重新回顾这一题,理了理思路,重新写了一遍代码。思路如下,设要查找的结点为key:首先创建一个path栈,用于存储路径若树为空,则返回0(未找到)若树不为空,则将其压入path中,然后进行判断:① 若该结点为key,返回1② 否则,递归查找其左结点和右结点,若找到,则返回1;否则,pa
2021-08-01 19:42:12
3180
原创 数据结构-求二叉树第K层结点个数
描述如果按照二叉树的顺序存储结构,逐个输入二叉树的结点值,(即按从上到下、从左至右的顺序,逐个输入结点值,对于空结点使用0表示),则一棵二叉树可以被一个序列唯一表示。输入第一行为二叉树中非空结点的个数K及要查找的层数L,1<=K<=2^10,L>=1;第二行为按照顺序结构逐个输入的二叉查找树的n个结点值(包含空结点),n个结点值之间用空格隔开,1<=n<=2^10输出第一行为二叉树第L层的结点个数第二行为空行由于以前没做过这种类型题目(当然,更重要的原因是自己
2021-06-17 22:03:46
4905
4
原创 数据结构-二叉排序树的合并-NOJ26
题目:将两棵二叉排序树合并为一棵二叉排序树。这一题我的思路是,遍历第二棵二叉排序树,将元素依次插入第一棵二叉排序树中,这样虽然效率未必最高,但是思路应是非常简明,易于理解。完成代码如下:#include <stdio.h>#include <stdlib.h>typedef struct node{ int data; struct node *lchild; struct node *rchild;} bstnode, *bstree;
2021-06-13 15:03:53
1589
原创 数据结构实验-哈夫曼编/译码器-NOJ7
写一个哈夫曼码的编/译码系统,要求能对要传输的报文进行编码和解码。构造哈夫曼树时,权值小的放左子树,权值大的放右子树,编码时右子树编码为 1,左子树编码为0。输入表示字符集大小为 n(n <= 100)的正整数,以及 n 个字符和 n 个权值(正整数,值越大表示该字符出现的概率越大);输入串长小于或等于 100 的目标报文。输出:经过编码后的二进制码,占一行;以及对应解码后的报文,占一行;最后输出一个回车符。题目很明确,实现哈夫曼树的各种操作。此题还是有一定难度的,完整代码如下,关键部分有注
2021-06-12 16:41:33
906
原创 数据结构-基于图的广度优先搜索策略-NOJ20
使用邻接表广度优先搜索图,判断是否存在由顶点vi到vj的路径数据结构:typedef int VertexData;//顶点数据为整型typedef struct ArcNode{ int adjvex;//该弧指向顶点的位置 struct ArcNode *nextarc;//指向下一条弧的指针} ArcNode;typedef struct VertexNode{ VertexData data;//顶点数据 ArcNode *firstarc;//指
2021-05-26 21:37:38
298
原创 数据结构实验-高精度计算PI值-NOJ2
题目:输入一个正整数n(n最多可能为500),要求输出PI,精确到小数点后n位.这一题是我学习数据结构初期碰到的一题,刚开始感觉无从下手,后来慢慢找到了思路.题目要求可能精确到小数点后500位,那么显然double类型是远远不够的,采用双向循环链表结构计算.使用的求PI公式:PI = 2*Σn!/(2n+1)!!代码如下:#include <stdio.h>#include <stdlib.h>#include <math.h>typedef stru
2021-04-07 20:54:28
1124
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人