7.6k 7 分钟

题目集总目录 学习指路博客 二叉搜索树与平衡二叉树 # 04 - 树 4 是否同一棵二叉搜索树 (25 分) 本题链接 小白专场将详细介绍 C 语言实现方法,属于基本训练,一定要做 # 题目大意 对于输入的各种插入序列,判断它们是否能生成一样的二叉搜索树。 # 思路 1. 分别建两棵树的判别方法 2. 不建树直接判断序列 3. 建一棵树再判别其他序列是否与该树一致 这里采用的是思路 3 # 代码 #include <iostream>using namespace std;#define maxsize 11typedef struct TNode*...
6.9k 6 分钟

题目集总目录 学习笔记指路博客 线性表、堆栈 # 02 - 线性结构 1 两个有序链表序列的合并 (15 分) 本题链接 这是一道 C 语言函数填空题,训练最基本的链表操作。如果会用 C 编程的话,一定要做; # 代码 #include <stdio.h>#include <stdlib.h>typedef int ElementType;typedef struct Node *PtrToNode;struct Node { ElementType Data; PtrToNode Next;};typedef...
1.9k 2 分钟

题目集总目录 # 01 - 复杂度 1 最大子列和问题 (20 分) 本题链接 是本次课最后讲到的 4 种算法的实验题,属于基本要求,一定要做; # 代码 #include <iostream>using namespace std;int n, x, nowsum, maxsum;int main() { cin >> n; for(int i = 0; i < n; ++i) { cin >> x; nowsum += x; if (nowsum > maxsum) {...
4k 4 分钟

# 一、Fibonacci 博弈 # 描述 基本的斐波那契博弈(Fibonacci Game)描述如下: 有一堆石子,两个顶尖聪明的人玩游戏,先取者可以取走任意多个,但不能全取完,之后每次可以取的石子数至少为 1,至多为对手刚取的石子数的 2 倍。约定取走最后一个石子的人为赢家,求必败态。 # 结论 当且仅当总石子数为斐波那契数时,先手必败。 # 证明 证明如下,转自大佬证明 用到了 Zeckendorf 定理(齐肯多夫定理):任何正整数可以表示为若干个不连续的 Fibonacci 数之和。 # 二、Bash 博弈 # 描述 基本的巴什博弈(Bash Game)描述如下: 有一堆 n...
2k 2 分钟

原博指路:MOOC 浙大数据结构课后题记录 ——PTA 数据结构题目集 (全) 本博客是为了记录学习数据结构时做的题集,若代码有疏漏欢迎指出! 也相当于是一个数据结构的总结了~ ps:因为已经学过 c 了所以都用 c 写了,但也有很多 c 语言的东西。 MOOC 传送门 # 第一周 —— 最大子列和算法、二分查找 代码及其思路指路博客:PTA 数据结构题目集 第一周 —— 最大子列和算法、二分查找 # 01 - 复杂度 1 最大子列和问题 (20 分) # 01 - 复杂度 2 Maximum Subsequence Sum (25 分) # 01 - 复杂度 3 二分查找 (20 分) #...
7.5k 7 分钟

上周末的蓝桥杯省模拟赛时最后一题是一道最小生成树的题目,因为恰好在慕课上刚看到这个地方,所以现学了 Prim 算法,解决了这个题目 (大概),赛后就打算多琢磨琢磨这一类题目。题目链接 最小生成树问题,是指给定无向图 G=(V,E),连接 G 中所有点,且边集是 E 的子集的树称为 G 的生成树 (Spanning Tree),而权值最小的生成树称为最小生成树 (Minimal Spanning Tree,MST)。 # 一、Kruskal 算法 Kruskal 算法易于编写,且效率很高 紫书 p356 描述如下: Kruskal...
6.1k 6 分钟

2020 蓝桥杯模拟省赛模拟赛题目及代码记录,若有错误欢迎指正! 因为赛后没分数啥的也不知道哪道题对哪道题不对,只能靠做的时候的感觉所以可能会有疏漏。 # 1. 填空题 易知为 2018 # 2. 填空题 因为有两个字母重复,所以答案为 7!/ 2 = 2520 # 3. 填空题 4 对括号,可以枚举共有 14 种情况,也可以递归 #include <iostream>#include <vector>using namespace std;typedef long long ll;ll n,ans,total;//total...
4.1k 4 分钟

记录一下慕课学习的笔记,以及例题代码 # 一。递归到动规的一般转化方法 递归函数有 n 个参数就定义一个 n 维的数组, 数组的下标是递归函数参数的取值范围。 这样就可以从边界值开始逐步填充数组,相当于计算递归函数值的逆过程。eg:例题 1 数字三角形 # 二。动规解题的一般思路 # 1. 将原问题分解为子问题 将原问题分解为若干个子问题,与原问题的形式相同或类似,只不过规模小了。 子问题都解决,原问题即解决。 子问题的解一旦求出就会被保存,所以每个子问题只要求解一次。 # 2....
6.8k 6 分钟

# 一、图 # 1. 什么是图 表示 “多对多” 的关系,包含了: 一组顶点:通常用 V (Vertex) 表示顶点集合 一组边:通常用 E (Edge) 表示边的集合 无向边是顶点对:(v,w) ∈ E,其中 v,w∈V 有向边 <v,w> 表示从 v 指向 w 的边 (单行线) 不考虑重边和自回路 # 抽象数据类型定义 类型名称:图 (Graph) 数据对象集:G (V,E) 由一个非空的有限顶点集合 V 和一个有限边集合 E 组成。 操作集:对于任意图 G ∈ Graph, 以及 v ∈ V,e ∈ E Graph Create ():...
3.9k 4 分钟

# 一、堆 # 1. 堆是什么 堆(Heap), 是一个可以被看做一棵完全二叉树的数组对象,有以下性质: 任意节点的值是其子树所有结点中的最大值 / 最小值(有序性) 堆总是一棵用数组表示的完全二叉树。 # 2. 最大堆的操作函数 定义 typedef struct HeapStruct *MaxHeap;struct HeapStruct { ElementType *Elements;// 存储堆元素的数组 int Size;// 当前元素个数 int Capacity;// 最大容量};# (1) 空最大堆的创建 (Create...