- 博客(152)
- 资源 (2)
- 收藏
- 关注
原创 课程作业 哈利波特文章检索系统
【问题描述】将哈利波特的7本书(txt格式)读入,然后在指定了人名/地名后,显示查询结果,选择指定查询结果序号(选择查询内容),能够显示指定查询结果所在位置前后的一段文字。【输入形式】哈利波特的7本书,txt文件【输出形式】人名/地名输出:显示查找到的人名/地名,以及出现的页码和章节,书名, 按照出现的页码顺序显示,每个查询结果都对应序号。序号 人名/地名 页码 章节 书名1 Harry
2021-07-04 15:23:36
1465
原创 课程作业 飞机大战游戏
游戏的编写能用到C++学习过程中的很多知识,数组、函数和面向对象。这个练习是一个开放式的练习,你可以在基本要求的基础上进行任何扩充。扩充下游戏1定义的飞机大战游戏的功能:增加多个界面,初始化界面,说明游戏功能;结束界面,提示用户的得分情况,以及是否开始一个新的游戏;随着积分的增加,可以考虑增加难度,加快敌机的下落速度,和出现的速度;功能上做更多的性能处理:例如防止玩家操控飞机飞出边界,击中/碰撞检测的处理增加按Esc键后游戏暂停的功能增加图形界面(easyX,Qt, MFC)以及面向对象的程序设
2021-07-04 15:12:04
1014
原创 2018第九届蓝桥杯C/C++ 省赛A组 题解
A 分数等比数列求和,手算就行B 星期一5217打开日历看1901年1月1日星期几,看后面的第一个星期一是几号,这天到最后一天总共多少天,再除七我在网上还看到了用Excel做的还有一个方法把这个保存到记事本中,然后拓展名改成.vbs,再打开,就是之间的天数msgbox datediff("d","1901-1-1","2000-12-31")C 乘积尾零可以用Python大数计算两个一位数相乘等于10的只有2和5,所以两个数相乘末尾有几个零,就是乘数中共可以分解出多少对2和5
2021-03-14 22:41:59
594
原创 2019第十届蓝桥杯C/C++ 省赛A组 题解
A2658417854注意用long long#include<iostream>using namespace std;bool check(int a){ for(;a;a=a/10) { int b=a%10; if(b==2||b==0||b==1||b==9) return true; } return false;}int main(){ long long int ans; for(int i=1;i<=2019;i++)
2021-03-11 20:31:14
832
原创 POJ 3278 Catch That Cow(bfs)
DescriptionFarmer John has been informed of the location of a fugitive cow and wants to catch her immediately. He starts at a point N (0 ≤ N ≤ 100,000) on a number line and the cow is at a point K (0 ≤ K ≤ 100,000) on the same number line. Farmer John has
2021-03-09 15:12:31
158
原创 HDU 2087 剪花布条(KMP)
Problem Description一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案。对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢?Input输入中含有一些数据,分别是成对出现的花布条和小饰条,其布条都是用可见ASCII字符表示的,可见的ASCII字符有多少个,布条的花纹也有多少种花样。花纹条和小饰条不会超过1000个字符长。如果遇见#字符,则不再进行工作。Output输出能从花纹布中剪出的最多小饰条个数,如果一块都没有,那就老老实实输出0,每个结果
2021-03-06 11:52:09
132
原创 散列表的性能分析
平均查找长度(ASL)用来衡量散列表查找效率:成功(ASLS),不成功(ASLU)关键词的查找次数,取决于产生冲突的多少,影响冲突多少的三个主要因素1.散列函数是否均匀2.处理冲突的方法3.散列表的装填因子α1.线性探测法查找性能期望探测p满足:2.平方探测法和双散列探测法查找性能期望探测p满足:3.分离链法期望探测p满足:...
2021-03-02 13:38:40
301
原创 散列表的冲突处理方法
常用的处理方法:开放定址法:按照某种规则取寻找另一空地址链地址法:同一位置的冲突对象组织在一起开放定址法1.线性探测法以增量序列1,2,3,……,(TableSize-1)循环试探下一个存储地址可能会发生冲突聚集2.平方探测法以增量序列12,-12,22,-22,……,q2,-q2且q<=|TableSize/2|循环试探下一个存储地址可能存在表中有空间,但是找不到的情况为解决这个问题将TableSize设为4k+3形式的某个素数时,平方探测法可以找到整个表的空间3.双散列探
2021-03-02 09:46:32
513
原创 散列函数的构造方法
一个好的散列函数一般考虑以下两个因素:计算简单,以便提高转换速度关键词对应的地址空间分布均匀,以尽量减少冲突数字关键词的散列函数构造1.直接定址法取关键词的某个线性函数值为散列地址,h(key)=a*key+b (a、b为常数)2.除留取余法h(key)=key mod pp是散列表的大小,一般是素数3.数字分析法分析数字关键字在各位上的变化情况,取比较随机的位作为散列地址比如 11位手机号码,后4位较为随机,作为地址4.折叠法把关键词分隔成位数相同的几个部分,然后叠加比如
2021-03-02 09:29:14
412
原创 散列查找
散列查找的时间复杂度几乎是常量O(1),查找时间与问题规模无关散列查找的两项基本工作:计算位置:构造散列函数确定关键词的存储位置解决冲突:应用某种策略解决多个关键词位置相同的问题散列方法存储对关键字是随机的,不便于顺序查找关键字,也不适合于范围查找,或最大值最小值查找。...
2021-03-02 09:07:54
151
原创 POJ 3157 Java vs C++(字符串)
DescriptionApologists of Java and C++ can argue for hours proving each other that their programming language is the best one. Java people will tell that their programs are clearer and less prone to errors, while C++ people will laugh at their inability to
2021-02-28 20:48:52
934
2
原创 HDU 2682 Tree(最小生成树)
Problem DescriptionThere are N (2<=N<=600) cities,each has a value of happiness,we consider two cities A and B whose value of happiness are VA and VB,if VA is a prime number,or VB is a prime number or (VA+VB) is a prime number,then they can be conne
2021-02-28 20:39:49
125
原创 HDU 6114 Chess
Problem Description車是中国象棋中的一种棋子,它能攻击同一行或同一列中没有其他棋子阻隔的棋子。一天,小度在棋盘上摆起了许多車……他想知道,在一共N×M个点的矩形棋盘中摆最多个数的車使其互不攻击的方案数。他经过思考,得出了答案。但他仍不满足,想增加一个条件:对于任何一个車A,如果有其他一个車B在它的上方(車B行号小于車A),那么車A必须在車B的右边(車A列号大于車B)。现在要问问你,满足要求的方案数是多少。Input第一行一个正整数T,表示数据组数。对于每组数据:一行,两个正整数N
2021-02-28 20:15:16
104
原创 组合数取余
组合数C(n,m)%k的计算方法一递推公式 C(n,m)=C(n-1,m)+C(n-1,m-1)一边计算一边取余时间复杂度O(n2) 适用范围m,n<1000,k为自然数#include<bits/stdc++.h>using namespace std;int c[1001][1001];int main(){ int n,m,k; scanf("%d%d%d",&n,&m,&k); for(int i=1;i<=n;i++
2021-02-28 20:07:11
563
原创 POJ 2505 A multiplication game(博弈)
DescriptionStan and Ollie play the game of multiplication by multiplying an integer p by one of the numbers 2 to 9. Stan always starts with p = 1, does his multiplication, then Ollie multiplies the number, then Stan and so on. Before a game starts, they d
2021-02-28 19:17:22
194
原创 堆中的路径
描述:将一系列给定数字插入一个初始为空的小顶堆H[]。随后对任意给定的下标i,打印从H[i]到根结点的路径。输入格式:每组测试第1行包含2个正整数N和M(≤1000),分别是插入元素的个数、以及需要打印的路径条数。下一行给出区间[-10000, 10000]内的N个要被插入一个初始为空的小顶堆的整数。最后一行给出M个下标。输出格式:对输入中给出的每个下标i,在一行中输出从H[i]到根结点的路径上的数据。数字间以1个空格分隔,行末不得有多余空格。输入样例:5 346 23 26 24 105
2021-02-28 18:59:45
100
原创 哈夫曼树的基本概念
带权路径长度(WPL):设二叉树有n个叶子结点,每个叶子结点带有权值Wk,从根节点到每个叶子结点的长度为Lk,则每个叶子结点的带权路径长度之后就是权值乘长度累加哈夫曼树:WPL最小的二叉树哈夫曼树的特点没有度为1的结点n个叶结点的哈夫曼树共有2*n-1个结点哈夫曼树的任意非叶结点的左右子树交换后仍是哈夫曼树对于同一组数据可能构造出不同的哈夫曼树...
2021-02-28 17:30:50
200
原创 堆的删除
删除大顶堆的根结点将堆的最后一位补至堆顶,然后对堆进行调整将根结点的两个子结点中最大的与最后一位比较,将较大的放至根节点,若放的不是最后一位,那么以刚才的子结点为根结点,重复之前的操作。typedef int ElementType;struct Heap{ ElementType *data; int size,capacity;};void DeleteMax(Heap *h){ int parent,child; if(h->size==0) return; El
2021-02-28 17:15:42
863
原创 堆排序
#include<iostream>using namespace std;void minheap_fixdown(int *a,int i,int n){ int left=2*i+1; int right=2*i+2; if(left>=n) return; int min=left; if(right<n) if(a[right]<a[left]) min=right; if(a[i]<a[min]) return; els
2021-02-27 21:13:00
97
原创 堆的遍历
void inorder(int a[],int i,int n){ if(i>=n) return; inorder(a,2*i,n); cout<<a[i]<<" "; inorder(a,2*i+1,n);}void preorder(int a[],int i,int n){ if(i>=n) return; cout<<a[i]<<" "; inorder(a,2*i,n); inorder(a,2*i+
2021-02-27 21:11:15
753
原创 堆的建立
堆是一种特殊的完全二叉树堆分为大顶堆和小顶堆大顶堆是每个结点都大于其左右结点的完全二叉树大顶堆是每个结点都小于其左右结点的完全二叉树建立一个大顶堆先建立一个空堆,将数向其中插入。将小于插入的数的数向下挪typedef int ElementType;struct Heap{ ElementType *data; int size,capacity;};Heap *CreateMaxHeap(int MaxSize){ Heap *h=(Heap *)malloc(sizeof(
2021-02-27 21:00:33
148
1
原创 Complete Binary Search Tree
descriptionA Binary Search Tree (BST) is recursively defined as a binary tree which has the following properties:The left subtree of a node contains only nodes with keys less than the node’s key.The right subtree of a node contains only nodes with keys
2021-02-27 19:26:22
169
原创 Root of AVL Tree
descriptionAn AVL tree is a self-balancing binary search tree. In an AVL tree, the heights of the two child subtrees of any node differ by at most one; if at any time they differ by more than one, rebalancing is done to restore this property. Figures 1-4
2021-02-27 15:46:56
158
原创 是否同一棵二叉搜索树
描述给定一个插入序列就可以唯一确定一棵二叉搜索树。然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到。例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树,都得到一样的结果。于是对于输入的各种插入序列,你需要判断它们是否能生成一样的二叉搜索树。输入格式:输入包含若干组测试数据。每组数据的第1行给出两个正整数N (≤10)和L,分别是每个序列插入元素的个数和需要检查的序列个数。第2行给出N个以空格分隔的正整数,作为初始插入序列。最后L行,每行给出N个插入的元素,属于L个需
2021-02-27 09:31:37
317
原创 平衡二叉树的插入
先看一下二叉搜索树的插入平衡二叉树的调整平衡二叉树的插入是二者的综合#include<iostream>#include<cstdlib> using namespace std;typedef struct AVLNode *AVLTree;typedef int ElementType;struct AVLNode{ ElementType data; AVLTree left; AVLTree right; int he
2021-02-27 09:31:11
2058
4
原创 平衡二叉树的调整
平衡二叉树都通过旋转来调整LL型造成不平衡的结点在从上往下第一个不平衡结点的左子树的左子树上#include<iostream>using namespace std;typedef struct AVLNode *AVLTree;typedef int ElementType;struct AVLNode{ ElementType data; AVLTree left; AVLTree right; int height;};AVL
2021-02-26 20:50:28
172
原创 平衡二叉树的基本概念
二叉搜索树的结点按照不同的次序插入,会有不同的深度和平均查找长度ASL。平衡二叉树(AVL树):空树或者任一结点的左右子树高度差的绝对值不超过1,即|BF(T)|<=1平衡因子:BF(T)=hL-hR hL和hR为T左右子树的高度结点数为n的AVL树的最大高度为O(log2n)...
2021-02-26 18:49:58
368
原创 二叉搜索树的删除
首先需要找到要删除的结点,先进行查找需要删除的结点有三种情况叶结点:直接删除,并将其父结点的指针置为NULL只有一个子结点的结点:将其父结点的指针指向其的子结点有两个子结点的结点:用右子树的最小元素或左子树的最大元素代替其//定义二叉树 typedef struct TreeNode *BinTree;typedef BinTree Position;typedef int ElementType;struct TreeNode{ ElementType data; BinTre
2021-02-26 18:09:22
150
原创 malloc()函数用法
malloc函数是一个分配内存空间的函数需包含头文件 stdlib.h函数原型 void *malloc(unsigned int size)参数是一个无符号整型数字,是分配字节数的大小如果分配空间成功,则返回值指向分配内存的指针,否则返回空指针NULL分配完内存后,如果不需再使用,需要使用free()函数将内存释放,否则会造成内存泄漏。#include<cstdlib>#include<cstdio>int main(){ int *a; //申请内存
2021-02-26 17:28:16
231
原创 二叉搜索树的查找
查找某一值查找从根结点开始,如果树为空,返回NULL若搜索树非空,则根结点键值和X进行比较,并进行不同处理:若X小于根结点的键值,只需在左子树中继续搜索若X大于根结点的键值,只需在右子树中继续搜索若二者相等,搜索完成,返回指向此结点的指针//定义二叉树 typedef struct TreeNode *BinTree;typedef BinTree Position;typedef int ElementType;struct TreeNode{ ElementType data
2021-02-26 17:05:59
250
原创 二叉搜索树的基本概念
二叉搜索树,也称二叉排序树或二叉查找树二叉搜索树:一棵二叉树,可以为空;如果不为空,满足以下性质非空左子树的所有键值小于其根结点的键值非空右子树的所有键值大于其根结点的键值左、右子树都是二叉搜索树...
2021-02-26 16:43:15
207
原创 Tree Traversals Again
descriptionAn inorder binary tree traversal can be implemented in a non-recursive way with a stack. For example, suppose that when a 6-node binary tree (with the keys numbered from 1 to 6) is traversed, the stack operations are: push(1); push(2); push(3);
2021-02-26 14:07:35
118
原创 List Leaves
descriptionGiven a tree, you are supposed to list all the leaves in the order of top down, and left to right.Input Specification:Each input file contains one test case. For each case, the first line gives a positive integer N (<=10) which is the tota
2021-02-26 10:46:53
84
原创 树的同构
给定两棵树T1和T2。如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是“同构”的。例如图1给出的两棵树就是同构的,因为我们把其中一棵树的结点A、B、G的左右孩子互换后,就得到另外一棵树。而图2就不是同构的。现给定两棵树,请你判断它们是否是同构的。输入格式:输入给出2棵二叉树树的信息。对于每棵树,首先在一行中给出一个非负整数N (≤10),即该树的结点数(此时假设结点从0到N−1编号);随后N行,第i行对应编号第i个结点,给出该结点中存储的1个英文大写字母、其左孩子结点的编号、右孩子结点
2021-02-26 00:28:03
154
原创 求二叉树的高度
递归实现二叉树的高度为左右子树两边的高度中的最大值加1#include<iostream>using namespace std;typedef struct TreeNode *BinTree;typedef BinTree Position;struct TreeNode{ int data; BinTree left; BinTree right;};int GetHeight(BinTree bt){ if(bt) return max(GetHeig
2021-02-25 21:38:23
95
原创 遍历二叉树的叶子结点
递归实现遍历二叉树的所有叶子结点#include<iostream>using namespace std;typedef struct TreeNode *BinTree;typedef BinTree Position;struct TreeNode{ int data; BinTree left; BinTree right;};void leaves(BinTree bt){ if(bt) { if(!bt->left&&!bt-
2021-02-25 21:32:57
2408
原创 二叉树的遍历
先序遍历访问根结点先序遍历左子树先序遍历右子树递归实现void PreOrderTraversal(BinTree bt){ if(bt) { cout<<bt->data; PreOrderTraversal(bt->left); PreOrderTraversal(bt->right); }}非递归实现使用栈遇到一个结点,访问其并就将它压入栈中先序遍历其左子树当左子树遍历完后,从栈中弹出一个结点,先序遍历其右子树void
2021-02-25 21:25:21
88
原创 二叉树的存储
顺序存储使用数组进行存储比较适合完全二叉树使用结点i的父结点的序号是i/2 i非根结点结点i的左子结点的序号是2i (2i<=n,否则无左子结点)结点i的右子结点的序号是2i+1 (2i+1<=n,否则无右子结点)对于非完全二叉树,可将无结点的位置记为空链表存储对于一般二叉树,使用顺序存储会造成空间的浪费链式存储是使用链表进行存储typedef struct TreeNode *BinTree;typedef BinTree Position;struct Tre
2021-02-25 20:14:56
118
原创 二叉树的基本概念
二叉树的定义二叉树:一个有穷的结点的集合。这个集合可以为空若不为空,则它是由根结点和称为其左子树和右子树的两个不相交的二叉树组成注意左右子树有顺序之分斜二叉树:只有左子树或只有右子树完美二叉树:除最底层的叶节点,其它结点均有左右子树完全二叉树: 只有最底层不全的完美二叉树二叉树的性质一个二叉树第i层的最大结点数为:2^(i-1)深度为k的二叉树有最大结点数为:2^k-1对任何非空二叉树,若n0表示叶结点的个数,n2表示深度为2的结点的个数,那么有n0=n2+1...
2021-02-25 20:00:29
178
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人