自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

龙龙龙

碧海潮声按玉箫

  • 博客(39)
  • 收藏
  • 关注

原创 7-14 电话聊天狂人 (25 分) ,c++stl里面的map法

给定大量手机用户通话记录,找出其中通话次数最多的聊天狂人。输入格式:输入首先给出正整数N(≤105),为通话记录条数。随后N行,每行给出一条通话记录。简单起见,这里只列出拨出方和接收方的11位数字构成的手机号码,其中以空格分隔。输出格式:在一行中给出聊天狂人的手机号码及其通话次数,其间以空格分隔。如果这样的人不唯一,则输出狂人中最小的号码及其通话次数,并且附加给出并列狂人的人数。输入样例:413005711862 1358862583213505711862 1308862583213

2022-03-25 20:35:31 193

原创 哈希表基础知识

那么哈希表能解决什么问题呢,一般哈希表都是用来快速判断一个元素是否出现集合里。例如要查询一个名字是否在这所学校里。要枚举的话时间复杂度是O ( n ) O(n)O(n),但如果使用哈希表的话, 只需要O ( 1 ) O(1)O(1)就可以做到。我们只需要初始化把这所学校里学生的名字都存在哈希表里,在查询的时候通过索引直接就可以知道这位同学在不在这所学校里了。将学生姓名映射到哈希表上就涉及到了hash function ,也就是哈希函数。#哈希函数哈希函数,把学生的姓名直接映射为哈希表上的索引,然

2022-03-25 20:25:46 254 1

原创 7-12 How Long Does It Take (25 分) 拓扑排序的变形

Given the relations of all the activities of a project, you are supposed to find the earliest completion time of the project.Input Specification:Each input file contains one test case. Each case starts with a line containing two positive integers N (≤100

2022-03-19 16:08:22 756

原创 拓扑排序,基础知识及代码实习

拓扑排序是对一个有向图构造拓扑序列,解决工程是否能顺利进行的问题。构造时有 2 种结果:此图全部顶点被输出:说明说明图中无「环」存在, 是 AOV 网没有输出全部顶点:说明图中有「环」存在,不是 AOV 网AOV(Activity On Vertex Network) :一种 有向 无回路 的图代码实现如下:首先建立图的邻接表类型(当然邻接矩阵也行):const int MAXV = 1000;typedef struct ANode { int adjvex;//该边结点的编号 stru

2022-03-19 14:10:32 648

原创 7-14 Insertion or Heap Sort (25 分) 堆排序的熟悉与简单应用

According to Wikipedia:Insertion sort iterates, consuming one input element each repetition, and growing a sorted output list. Each iteration, insertion sort removes one element from the input data, finds the location it belongs within the sorted list, an

2021-12-24 16:26:09 329

原创 各种排序算法汇总(内排序)

1.直接插入排序,时间复杂度n^2void InsertSort(int R[], int n)//对含n个元素的数组R排序{ int i,j, temp; for (int i = 1;i < n;i++)//初始时有序区只有R[0]一个元素 { if (R[i] < R[i - 1])//从最靠近有序区那个元素开始找,找到比有序区最大元素 //也就是最右边元素更小的元素,然后插入有序区 { temp = R[i]; j = i - 1; while

2021-12-24 14:41:30 752

原创 7-13 Insert or Merge (25 分),直接插入排序与归并排序的简单应用

According to Wikipedia:Insertion sort iterates, consuming one input element each repetition, and growing a sorted output list. Each iteration, insertion sort removes one element from the input data, finds the location it belongs within the sorted list, an

2021-12-19 15:29:14 153

原创 7-9 旅游规划 (25 分)Dijkstra算法,单源最短路径算法

有了一张自驾旅游路线图,你会知道城市间的高速公路长度、以及该公路要收取的过路费。现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径。如果有若干条路径都是最短的,那么需要输出最便宜的一条路径。输入格式:输入说明:输入数据的第1行给出4个正整数N、M、S、D,其中N(2≤N≤500)是城市的个数,顺便假设城市的编号为0~(N−1);M是高速公路的条数;S是出发地的城市编号;D是目的地的城市编号。随后的M行中,每行给出一条高速公路的信息,分别是:城市1、城市2、高速公路长度、收费额,中

2021-12-17 11:22:28 630

原创 最小生成树Prim算法的简单应用-----08-图7 公路村村通 (30 分)

现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本。输入格式:输入数据包括城镇数目正整数N(≤1000)和候选道路数目M(≤3N);随后的M行对应M条道路,每行给出3个正整数,分别是该条道路直接连通的两个城镇的编号以及该道路改建的预算成本。为简单起见,城镇从1到N编号。输出格式:输出村村通需要的最低成本。如果输入数据不足以保证畅通,则输出−1,表示需要建设更多公路。输入样例:6 151 2 51 3 31 4 71 5 4

2021-12-12 13:34:06 293

原创 最短路径算法,Dijkstra算法,floyd算法 07-图4 哈利·波特的考试 (25 分)

07-图4 哈利·波特的考试 (25 分)哈利·波特要考试了,他需要你的帮助。这门课学的是用魔咒将一种动物变成另一种动物的本事。例如将猫变成老鼠的魔咒是haha,将老鼠变成鱼的魔咒是hehe等等。反方向变化的魔咒就是简单地将原来的魔咒倒过来念,例如ahah可以将老鼠变成猫。另外,如果想把猫变成鱼,可以通过念一个直接魔咒lalala,也可以将猫变老鼠、老鼠变鱼的魔咒连起来念:hahahehe。现在哈利·波特的手里有一本教材,里面列出了所有的变形魔咒和能变的动物。老师允许他自己带一只动物去考场,要考察他把这

2021-12-05 16:40:03 143

原创 06-图3 六度空间 (30 分) ,BFS的变形应用

“六度空间”理论又称作“六度分隔(Six Degrees of Separation)”理论。这个理论可以通俗地阐述为:“你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过五个人你就能够认识任何一个陌生人。”如图1所示。“六度空间”理论虽然得到广泛的认同,并且正在得到越来越多的应用。但是数十年来,试图验证这个理论始终是许多社会学家努力追求的目标。然而由于历史的原因,这样的研究具有太大的局限性和困难。随着当代人的联络主要依赖于电话、短信、微信以及因特网上即时通信等工具,能够体现社交网络关系的

2021-11-27 16:29:30 144

原创 06-图2 Saving James Bond - Easy Version (25 分) 图遍历算法的使用

This time let us consider the situation in the movie “Live and Let Die” in which James Bond, the world’s most famous spy, was captured by a group of drug dealers. He was sent to a small piece of land at the center of a lake filled with crocodiles. There he

2021-11-25 09:45:36 143

原创 06-图1 列出连通集 (25 分),图的一些基础知识(建图等),DFS,BFS等

给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集。假设顶点从0到N−1编号。进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序访问邻接点。输入格式:输入第1行给出2个整数N(0<N≤10)和E,分别是图的顶点数和边数。随后E行,每行给出一条边的两个端点。每行中的数字之间用1空格分隔。输出格式:按照"{ v1​v2​… vk​}"的格式,每行输出一个连通集。先输出DFS的结果,再输出BFS的结果。输入样例:8 60 70 12

2021-11-24 11:08:55 118

原创 哈夫曼树的构造,堆的基本使用,05-树9 Huffman Codes (30 分)

In 1953, David A. Huffman published his paper “A Method for the Construction of Minimum-Redundancy Codes”, and hence printed his name in the history of computer science. As a professor who gives the final exam problem on Huffman codes, I am encountering a

2021-11-22 20:13:18 439

原创 013:魔兽世界之一:备战

总时间限制: 1000ms 内存限制: 65536kB描述魔兽世界的西面是红魔军的司令部,东面是蓝魔军的司令部。两个司令部之间是依次排列的若干城市。红司令部,City 1,City 2,……,City n,蓝司令部两军的司令部都会制造武士。武士一共有 dragon 、ninja、iceman、lion、wolf 五种。每种武士都有编号、生命值、攻击力这三种属性。双方的武士编号都是从1开始计算。红方制造出来的第n个武士,编号就是n。同样,蓝方制造出来的第n个武士,编号也是n。武士在刚降生的时候有一

2021-11-04 20:25:41 422

原创 c++基础知识,new,delete内存管理的一些东西。

1.把十进制变成其他进制可以使用常用输出格式控制符。包括endl,ends,dec,hex,oct,setfill(char c),setprecision(int n),setw(int n)等等符号下面为一个进制转换的代码实例:#include<iostream>#include<iomanip>using namespace std;void display(int & rk){ cout << dec << " " <&

2021-11-02 18:46:48 89

原创 006:简单的整数划分问题,(分苹果问题)递归

描述将正整数n 表示成一系列正整数之和,n=n1+n2+…+nk, 其中n1>=n2>=…>=nk>=1 ,k>=1 。正整数n 的这种表示称为正整数n 的划分。正整数n 的不同的划分个数称为正整数n 的划分数。输入标准的输入包含若干组测试数据。每组测试数据是一个整数N(0 < N <= 50)。输出对于每组测试数据,输出N的划分数。样例输入5样例输出7提示5, 4+1, 3+2, 3+1+1, 2+2+1, 2+1+1+1, 1+1+1+1

2021-11-02 18:45:33 209

原创 分治法,(011:求排列的逆序数),通过分治把时间复杂度降为nlogn

总时间限制: 1000ms 内存限制: 65536kB描述在Internet上的搜索引擎经常需要对信息进行比较,比如可以通过某个人对一些事物的排名来估计他(或她)对各种不同信息的兴趣,从而实现个性化的服务。对于不同的排名结果可以用逆序来评价它们之间的差异。考虑1,2,…,n的排列i1,i2,…,in,如果其中存在j,k,满足 j < k 且 ij > ik, 那么就称(ij,ik)是这个排列的一个逆序。一个排列含有逆序的个数称为这个排列的逆序数。例如排列 263451 含有8个逆序(2,

2021-10-30 11:36:04 382

原创 二分法(009:月度开销),(008:派)

总时间限制: 1000ms 内存限制: 65536kB描述农夫约翰是一个精明的会计师。他意识到自己可能没有足够的钱来维持农场的运转了。他计算出并记录下了接下来 N (1 ≤ N ≤ 100,000) 天里每天需要的开销。约翰打算为连续的M (1 ≤ M ≤ N) 个财政周期创建预算案,他把一个财政周期命名为fajo月。每个fajo月包含一天或连续的多天,每天被恰好包含在一个fajo月里。约翰的目标是合理安排每个fajo月包含的天数,使得开销最多的fajo月的开销尽可能少。输入第一行包含两个整数N

2021-10-30 11:08:52 339

原创 二分法 一 ,007:Aggressive cows

Farmer John has built a new long barn, with N (2 <= N <= 100,000) stalls. The stalls are located along a straight line at positions x1,…,xN (0 <= xi <= 1,000,000,000).His C (2 <= C <= N) cows don’t like this barn layout and become aggres

2021-10-28 16:24:57 207

原创 05-树7 堆中的路径 (25 分) ,堆的建立,插入和删除等操作

将一系列给定数字插入一个初始为空的小顶堆H[]。随后对任意给定的下标i,打印从H[i]到根结点的路径。输入格式:每组测试第1行包含2个正整数N和M(≤1000),分别是插入元素的个数、以及需要打印的路径条数。下一行给出区间[-10000, 10000]内的N个要被插入一个初始为空的小顶堆的整数。最后一行给出M个下标。输出格式:对输入中给出的每个下标i,在一行中输出从H[i]到根结点的路径上的数据。数字间以1个空格分隔,行末不得有多余空格。输入样例:5 346 23 26 24 105 4 3

2021-10-28 12:14:12 106

原创 04-树6 Complete Binary Search Tree (30 分) (完全二叉树的特性,二叉搜索树的特性,顺序表存储二叉树,等等)

A 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 greater than

2021-10-25 20:09:19 219

原创 04-树5 Root of AVL Tree (25 分)----根据输入序列构建平衡二叉树并且输出根节点data值

An 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 illustrate t

2021-10-22 17:06:06 149

原创 串的基本知识,顺序串和链串的基本操作

顺序串的基本操作#include<iostream>using namespace std;const int MaxSize = 50;typedef struct { char data[MaxSize] = {"\n"};//在这里把串初始化为换行结束符,结尾就不会出现很多烫字了 int length;//讲实话为什么这样初始化一个“\n''还是不太清楚}SqString;//输入字符串生成串void StrAssign(SqString& s, char cst

2021-10-22 10:59:08 363

原创 递归算法实例一(POJ)003:全排列

003:全排列查看提交统计提问总时间限制: 1000ms 内存限制: 65536kB描述给定一个由不同的小写字母组成的字符串,输出这个字符串的所有全排列。 我们假设对于小写字母有’a’ < ‘b’ < … < ‘y’ < ‘z’,而且给定的字符串中的字母已经按照从小到大的顺序排列。输入输入只有一行,是一个由不同的小写字母组成的字符串,已知字符串的长度在1到6之间。输出输出这个字符串的所有排列方式,每行一个排列。要求字母序比较小的排列在前面。字母序如下定义:已知...

2021-10-21 20:03:01 372

原创 03-树3 Tree Traversals Again (25 分) (根据树的先序序列和中序序列求后序序列)递归调用

An 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); pop(); pop(

2021-10-19 18:16:38 92

原创 04-树4 是否同一棵二叉搜索树 (25 分)(考察二叉搜索树的基本操作)

给定一个插入序列就可以唯一确定一棵二叉搜索树。然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到。例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树,都得到一样的结果。于是对于输入的各种插入序列,你需要判断它们是否能生成一样的二叉搜索树。输入格式:输入包含若干组测试数据。每组数据的第1行给出两个正整数N (≤10)和L,分别是每个序列插入元素的个数和需要检查的序列个数。第2行给出N个以空格分隔的正整数,作为初始插入序列。随后L行,每行给出N个插入的元素,属于L个需要检查

2021-10-17 11:05:47 178

原创 006:奇怪的类复制(主要考察构造函数)

程序填空,使其输出9 22 5#include using namespace std;class Sample {public:int v;// 在此处补充你的代码};void PrintAndDouble(Sample o){cout << o.v;cout << endl;}int main(){Sample a(5);Sample b = a;PrintAndDouble(b);Sample c = 20;PrintAndDouble©;

2021-10-13 18:32:41 438

原创 001:特殊密码锁(枚举法)

描述有一种特殊的二进制密码锁,由n个相连的按钮组成(n<30),按钮有凹/凸两种状态,用手按按钮会改变其状态。然而让人头疼的是,当你按一个按钮时,跟它相邻的两个按钮状态也会反转。当然,如果你按的是最左或者最右边的按钮,该按钮只会影响到跟它相邻的一个按钮。当前密码锁状态已知,需要解决的问题是,你至少需要按多少次按钮,才能将密码锁转变为所期望的目标状态。输入两行,给出两个由0、1组成的等长字符串,表示当前/目标密码锁状态,其中0代表凹,1代表凸。输出至少需要进行的按按钮操作次数,如果无法实现

2021-10-11 20:04:59 676

原创 03-树2 List Leaves (25 分) (根据输入找树的头节点,然后再用队列层次遍历正确顺序输出叶子结点)

Given 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 total number of node

2021-10-11 19:29:33 81

原创 03-树1 树的同构 (25 分) (主要根据输入找到树的头结点,然后递归判断是否为同一颗二叉树

给定两棵树T1和T2。如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是“同构”的。例如图1给出的两棵树就是同构的,因为我们把其中一棵树的结点A、B、G的左右孩子互换后,就得到另外一棵树。而图2就不是同构的。现给定两棵树,请你判断它们是否是同构的。输入格式:输入给出2棵二叉树树的信息。对于每棵树,首先在一行中给出一个非负整数N (≤10),即该树的结点数(此时假设结点从0到N−1编号);随后N行,第i行对应编号第i个结点,给出该结点中存储的1个英文大写字母、其左孩子结点的编号、右孩子结点

2021-10-11 19:19:12 127

原创 树与二叉树的基本概念,遍历与使用

1.树的一些基本术语2.二叉树的创建与遍历

2021-10-11 19:05:06 167

原创 栈和队列的基本操作

1.顺序栈的基本操作typedef struct { //顺序栈的数据类型 ElemType data[MaxSize]; int top;}SqStack;void InitStack(SqStack*& s)//初始化顺序栈{ s = new SqStack; s->top = -1;}bool StackEmpty(SqStack* s)//判断栈是否为空{ return(s->top == -1);}void Desto

2021-10-05 10:46:54 146

原创 02-线性结构3 Reversing Linked List (25 分)(把变量放入数组下标和数组值里面,方便处理)

跪求这题链表的解法,感觉处理起来没有顺序表方便,于是偷懒用了一波结构体数组的解法,其中也涉及了很多的知识点1.这题还是使用了之前的一个技巧,因为输入的每一组数据包括该节点的地址,data值以及下一组数据节点的地址,变量有三个(其实是两个,有一个是下一个节点的地址值)。所以定义了一个结构体数组,数组下标值为对应节点的地址值,结构体内部的data和next分别代表该节点的data和下一个结点的address,以此来实现延续性。2.为了简便运算,这题使用了reserve函数3.同样为了简便运算,使用了c语言

2021-10-04 20:17:48 106

原创 cin.getline,cin.get,getline,cin.get()的用法(例题为poj3,005学生信息处理程序

c++使用string和字符数组的一个不同点是,就是在处理他们时必须使用不同的函数集,例如,要读取一行输入,字符数组必须使用cin.getline而不是getline。下面介绍这两种函数的具体用法1.c++cin.getine的具体用法与 getline 一样,cin.getline 允许读取包含空格,逗号等的字符串。它将继续读取,直到它读取至最大指定的字符数,或直到按下了回车键。以下是其用法示例:cin.getline(sentence, 20);上面程序表示最多可以读取19个字符,不包括最后的

2021-09-28 20:28:30 139

原创 02-线性结构2 一元多项式的乘法与加法运算(把两个变量一个放入数组下标里面,一个放入数组值里面)

题目:对于这题,一开始我的解法是这样的:十分愚蠢,经常出现访问冲突等问题,因为反复定义指针并且赋值。而且不太好处理相乘的情况,得单个相乘然后许多个进行相加,理论上做出来的难度系数比较大,所以我果断放弃了这种做法。下面是第一种做法void add1(duoxiangsi * p1, duoxiangsi *p2,int m,int n){ int i = 0, j = 0,s=0; duoxiangsi* p3 = p2, * p4 = p1; while (i<m || j<n)

2021-09-26 16:15:57 145

原创 c++基础知识

1.指针,引用的认识,求数据的地址,和数据对应指针的地址int main(){ int a = 2345; int* pa; int& ra = a; pa = &a; cout << a << '\t' << ra << '\t' << *pa << endl; cout << (&a) << '\t' << (&ra) << '\t' &

2021-09-24 19:56:10 77

原创 双链表的定义与使用

1.建立双链表结点#include<iostream>using namespace std;typedef int ElemType;typedef struct DNode { //双链表结点 ElemType data; DNode* prior; DNode* next;}DLinkNode;2.建立双链表oid CreateListF(DLinkNode*& L, ElemType a[], int n)//采用尾插法建立双链表{ DLin

2021-09-24 18:47:46 150

原创 单链表基础知识

1.建立单链表结点#include<iostream>using namespace std;typedef int ElemType;typedef struct LNode //建立结点{ ElemType data; struct LNode* next;}LinkNode;2.建立单链表;void CreateListF(LinkNode*& L, ElemType a[], int n) //头插法创建单链表{ Lin

2021-09-24 18:29:15 157

空空如也

空空如也

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

TA关注的人

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