数据结构
文章平均质量分 77
Draven__
这个作者很懒,什么都没留下…
展开
-
5-7 六度空间 (30分)
点击打开链接这是一道典型的bfs的题目,关键点在于设置一个last标记,标志每一层的最后一个节点,到达该节点时就层数加一#include#include#include#include#include#include#include#include#includeusing namespace std;int N,M;int visit[10005]={0};m原创 2017-06-28 22:04:43 · 370 阅读 · 0 评论 -
Rikka with Candies(bitset操作)
题意:A数组n个数,B数组m个数,q个查询, 每次给出一个k,询问有多少对(i,j), 使得Ai % Bj = k, 输出对数对模2的值这道题可以用bitset来做,bitset与数组类似,但其中每一位只能为0或1,用来存储2进制的每一位用整值类型将第27 位设置为1, 我们这样写quiz1 |= 1<<27;而用bitset 来做我们可以写quizl[ 27 ] = ...原创 2017-08-09 16:44:13 · 570 阅读 · 0 评论 -
5-9 旅游规划
点击打开链接有权图单源路径最小值原创 2017-07-08 19:32:31 · 356 阅读 · 0 评论 -
5-8 哈利·波特的考试
点击打开链接简单的floyd算法运用三层for循环建立一个二维矩阵,存有最小距离找出一行中的最大值,然后求每行最大值的最小值原创 2017-07-06 21:02:03 · 261 阅读 · 0 评论 -
5-6 列出连通集
点击打开链接简单图论用邻接表的方式实现的这个无向图map > t 然后用迭代器来遍历flag数组判断该点是否遍历过sort对每一个vector 排序,来保证从小到大输出#include#include#include#include#include#include#include#include#includeusing namespace std;原创 2017-06-27 22:27:33 · 242 阅读 · 0 评论 -
5-8 File Transfer
点击打开链接最简单的并查集#include#include#include#includeusing namespace std;int p[10005];int find(int x){ return x==p[x]? x : p[x]=find(p[x]);}void mix(int a,int b){ int fa=find(a); in原创 2017-06-26 21:21:58 · 215 阅读 · 0 评论 -
5-9 Huffman Codes
点击打开链接符合两个要求就可以判断该树是否满足要求判断输入的编码是否符合要求(1、编码长度与Huffman编码长度相同 2、前缀编码)首先想到的避免建一棵哈弗曼树,是用一个结构体node来保存学生提交的节点的编码但估计在判断前缀编码时会超时(N#include#include#include#include#include#include#include#in原创 2017-07-03 14:41:42 · 266 阅读 · 0 评论 -
5-5 堆中的路径
点击打开链接用一个数组来存放堆,注意a[0]要设一个最小值来当哨兵,或者控制insert函数里for循环#include#include#include#includeusing namespace std;int a[1005];int Size=0;void Insert(int x){ if(Size == 1000) { return;原创 2017-06-26 13:08:23 · 328 阅读 · 0 评论 -
5-2 Reversing Linked List
点击打开链接链表的逆转,定义一个结构体来模拟#include#include#include#includeusing namespace std;struct node{ int next; int data;}a[100005];int prehead; //指向这一次逆转的最后一个节点int nexthead; //指向下一次逆转的第一个节点原创 2017-06-25 16:34:34 · 285 阅读 · 0 评论 -
5-6 Root of AVL Tree
点击打开链接建一个AVL树#include#include#include#includeusing namespace std;typedef struct AVLNode *Position;typedef Position AVLTree; /* AVL树类型 */struct AVLNode{ int Data; /* 结点数据 */ AVLTre原创 2017-06-24 21:43:16 · 221 阅读 · 0 评论 -
5-4 是否同一棵二叉搜索树
点击打开链接先建一颗模板数,然后对于每一个测试,检测到达该节点的路径上的每一个点是否遍历过,如果遍历过,则相同,否则树的顺序就不一样#include#include#include#includeusing namespace std;typedef struct TreeNode *Tree;struct TreeNode{ int v; Tree rig原创 2017-06-24 16:36:26 · 222 阅读 · 0 评论 -
5-4 List Leaves
点击打开链接用一个队列实现了二叉树的层序遍历#include#include#include#includeusing namespace std;#define null -1struct TreeNode{ int Element; int right,left;}T1[100];int Buildtree(struct TreeNode T[])原创 2017-06-24 13:47:43 · 266 阅读 · 0 评论 -
5-3 树的同构
点击打开链接首先肯定是通过题目的输入来构造出两棵树,然后我们就对第一棵树中每一个结点来找出第二棵树中的对应结点,然后判断它们的孩子结点元素是否是一样的。两棵树中包含的结点个数和元素必须相同的,而对于第一棵树的每一个结点呢,在第一棵树我们都能找到一个与之对应的结点,并且它们的左右孩子结点的元素是相同的话,当然左右可以互换,这样的两棵树就是同构的。 #include#include#i原创 2017-06-23 15:17:23 · 609 阅读 · 0 评论 -
5-2 一元多项式的乘法与加法运算
点击打开链接因为数据比较小,所以可以用数组来模拟,数组坐标表示指数,数组大小表示系数#include#include#includeusing namespace std;#define N 10005int main(){ int a[N]={0}; int b[N]={0}; int c[N]={0}; int d[N]={0}; i原创 2017-06-23 13:53:13 · 264 阅读 · 0 评论 -
5-51 两个有序链表序列的合并 (20分)
点击打开链接对链表的一些初始操作#include#includetypedef struct Node* List;struct Node{ int data; struct Node* Next;};List InitList()//初始化{ List l; l=(List)malloc(sizeof(struct Node)); i转载 2017-06-22 20:56:38 · 316 阅读 · 0 评论 -
5-7 Complete Binary Search Tree
点击打开链接根据老师视频写的代码,只能拿26分,估计是求高度处还发生了一定错误#include#include#include#include#include#include#include#include#include#includeusing namespace std;int N;int A[1005],T[1005];int getleftlength原创 2017-06-30 18:48:03 · 346 阅读 · 0 评论 -
5-5 Tree Traversals Again
点击打开链接push顺序给出先序遍历,pop顺序给出中序遍历,根据先序中序直接求出后序,并不需要构建图#include#include#include#include#include#include#include#include#include#includeusing namespace std;int N;int pre[100],in[100],post[原创 2017-06-29 18:41:34 · 405 阅读 · 0 评论