自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 收藏
  • 关注

原创 哈夫曼树【北邮机试】

哈夫曼树机试常考类型,优先队列实现哈夫曼树的构建

2023-04-28 12:29:28 2189 1

原创 幂次方(贵大机试)+【快速幂详解】

快速幂基础详解,数论

2023-04-26 10:02:46 308

原创 2022选数异或

动态规划,最小子区间

2023-03-02 10:44:30 248

原创 【LeetCode】数组系列-双指针

双指针的一些例题

2022-11-15 11:26:55 867

原创 算法设计课程练习-回溯

回溯法,dfs

2022-10-11 20:28:44 147

原创 算法设计课程练习-贪婪

贪婪算法

2022-09-13 17:03:06 64

原创 算法设计课程练习-动态规划

动态规划汇总

2022-09-12 15:39:38 176

原创 算法设计课程练习-蛮力

蛮力法

2022-09-06 11:49:27 145

原创 算法设计课程练习-分治

分治法算法联系

2022-09-01 21:31:25 138

原创 括号匹配(北大、中大机试)

#include<bits/stdc++.h>using namespace std;int val[127];int n;int main(){ val['<'] = 1; val['('] = 2; val['['] = 3; val['{'] = 4;//定义括号优先级 cin >> n; while (n--) { stack <char> st;//定义栈 string s;

2022-03-20 09:44:48 860 1

原创 整除问题(上交机试)

题目描述:Time Limit: 1000 msMemory Limit: 256 mb给定n,a求最大的k,使n!可以被a^k整除但不能被 a^(k+1)整除。输入输出格式:输入格式:两个整数n(2<=n<=1000),a(2<=a<=1000)输出格式:一个整数.输入输出样例:输入样例:6 10输出样例:1思路分析:既然要求整除,说明每个素因子都是可以抵消的,这样我们就可以求解了(注意这里n!的素因数可以比a^k 多,但是必须包含a^k

2022-03-16 21:07:08 323 2

原创 贪心算法(浙大机试)

一、组队刷题(先来道简单的)某天,吴大佬准备和菜鸡Tirpitz一起组队刷题,聪明的吴大佬把题目分成了n个板块,每个板块有w[i]个题目,刷完这个板块需要消耗吴大佬m[i]的精力。吴大佬没有必要在一个板块死磕,/毕竟有咸鱼队友Tirpitz/。相反,如果他消耗m[i]%的精力时,他会解决这个专题w[i]%的题目,现在吴大佬想给聪明的你一个任务,让你计算吴大佬一共能做多少道题目?(没有a完就算成小数累加哦w/这个也算是吴大佬的贡献嘛/)输入输出格式输入描述:输入由多个测试用例组成,每个测试用例是有两

2022-03-06 11:34:17 594

原创 查找第K小数(北邮机试)

Time Limit: 1000 msMemory Limit: 256 mb查找一个数组的第K小的数,注意同样大小算一样大。 如 2 1 3 4 5 2 第三小数为3。输入输出格式输入描述输入有多组数据。每组输入n,然后输入n个整数(1<=n<=1000),再输入k。输出描述输出第k小的整数。输入输出样例输入样例62 1 3 5 2 23输出样例3此题有两种思路:①用普通数组对数据进行存储,然后sort排序再去重即可,代码如下:#include

2022-03-05 16:25:30 262

原创 字符串排序(北大机试)

编写一个程序,将输入字符串中的字符按如下规则排序(一个测试用例可能包含多组数据,请注意处理)。规则 1 :英文字母从 A 到 Z 排列,不区分大小写。如,输入: Type 输出: epTy规则 2 :同一个英文字母的大小写同时存在时,按照输入顺序排列。如,输入: BabA 输出: aABb规则 3 :非英文字母的其它字符保持原来的位置。如,输入: By?e 输出: Be?y输入输出格式输入样例A Famous Saying: Much Ado About Nothing (2012/8)

2022-03-05 10:48:34 279

原创 奇偶排序(贵大/兰大机试)

输入 n 个数进行排序,要求先按奇偶后按从小到大的顺序排序。输入描述:第一行输入一个整数 n,表示总共有多少个数,n<=1000。 第二行输入 n 个整数,用空格隔开。输出描述:输出排序之后的结果。输入样例:81 2 3 4 5 6 7 8输出样例:1 3 5 7 2 4 6 8本人利用这个题目来仔细总结以下sort函数,sort函数是STL中很常用的排序函数,其本质是封装好的快速排序函数,可以对最大30W个数进行排序,时间复杂度为nlogn。sort函数是不稳定的,如

2022-02-05 16:31:14 650

原创 删除字符串(贵大机试)

给你一个字符串S,要求你将字符串中出现的所有"gzu"(不区分大小写)子串删除,输出删除之后的S。就是说出现“Gzu”、“GZU”、“GZu”、"gzU"都可以删除。输入描述:输入一行字符串S,长度不超过100。输出描述:输出进行删除操作之后的S。输入样例:GzzGzukkgzUuu输出样例:Gzzkkuu**分析:**思路很简单,就是先把字符串全部转换成小写再进行模式匹配,删除对应的字串即可,但是实现方式不同。本人本来想利用STL库中的find和erase实现快速的查找和

2022-02-04 22:57:11 989

原创 日期差值(上交机试)

有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天输入描述有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD输出描述每组数据输出一行,即日期差值输入样例2011041220110422输出样例11分析:本题需要考虑三种情况:①同年(同月否?)计算②最后一年计算(同月否?)③中间间隔的完整年份的计算在解题时为方便字符串与数字之间的转换,本人用到了STL库的stoi函数将字符串快速转换成整数,在这里详细介绍一下相关的几个函数:

2022-02-03 22:24:11 1083

原创 旋转矩阵与蛇形矩阵

#include<bits/stdc++.h>using namespace std;//逆转90° void fun90(int a[100][100],int b[100][100],int n){ for(int i=0 ; i<n ; i++){ for(int j=0 ; j<n ; j++){ b[j][n-i-1] = a[i][j]; } }} //逆转180°void fun180(int a[100][100],int b[100]

2022-01-27 22:30:30 509

原创 负二进制转换

题目二进制转换的问题,想必大家都没有问题了吧,比如给你一个十进制数13,其对应的二进制表示为:1101。因为13=123+1*22+021+1*20.江鸟整天胡思乱想,现在他想到一个问题:如果将平时二进制转换过程中的基数2变成-2,那么转换过来的数将又是什么呢?江鸟将这种转换方式称为“负二进制转换”,为了让大家接受他的理论,他举了个例子如下:1*(-2)3+1*(-2)2+0*(-2)1+1*(-2)0=-3,所以-3的该种转换为1101.输入输出格式输入格式有多组测试数据。 输入为一个整数M.

2022-01-26 20:54:11 1201

原创 JAVA:实现磁盘文件的IO操作

1、关闭eclipse,然后使用任意压缩软件,把eclipse文件夹及文件夹下的所有压缩缩成一个eclipse.zip 保存到D盘下面。package exce08;import java.io.*;public class homework01 { public static void main(String[] args) { // TODO 自动生成的方法存根 String srcFileName = "D:\\Eclipse\\eclipse.zip";//需要复制的文件目录

2021-11-30 11:01:40 545

原创 复习:最短路径

一、基本概念最短路径:在非网图中,最短路径是指两顶点之间经历的边数最少的路径;在网图中,最短路径是指两顶点之间经历的边上权值之和最少的路径。源点:路径上的第一个顶点。终点:路径上最后一个顶点。二、Dijkstra算法(值适用于简单路径,不适合回路)Dijkstra算法用于求单元点最短路径问题,给定有向网图G=(V,E)和源点v属于V,求v到G中其余各个顶点的最短路径。①基本思路:将顶点集合V分成两个集合,集合S存放源点v和已经确定最短路径的顶点,另一个集合V-S存放为确定最短路径的顶点。

2021-11-22 21:35:26 823

原创 复习:最小生成树

一、基础概念生成树:在连通图中,包含图中全部顶点的一个极小连通子图(n个顶点的生成树有且仅有n-1条边,因为n个顶点至少要有n-1条边才能够保证连通)。生成森林:在非连通图中,由每个连通分量都可以得到一棵生成树,这些生成树就组成了非连通图的生成森林。生成树的代价:无向连通网的生成树上各边的权值纸盒称为该生成树的代价。最小生成树:在图中所有生成树中,代价最小的生成树。MST性质:二、Prim算法(从顶点的角度出发)设G=(V,E)是无向连通网,T=(U,TE)是G的最小生成树。①基本思想:设

2021-11-22 18:05:44 459

原创 复习:图的实现

图的两种存储结构及实现方式一个图包括两个部分:顶点信息以及顶点之间边的信息。下面介绍两种常用的存储结构——邻接矩阵和邻接链表。一、邻接矩阵实现图一维数组vertex[maxsize]:存储图中的顶点二维数组edge[maxsize]:存储图中的边(顶点的邻接关系,邻接矩阵)①邻接矩阵的类定义const int MaxSize = 10;//定义图中最大的顶点数(要比实际的顶点数要大)template<typename DataType>class MGraph{ public

2021-11-15 23:20:12 187

原创 二叉树的相关操作

1、计算二叉树的叶子结点的个数template<typename DataType>int BiTree<DataType>::Count(BiNode *bt){ int count; if(bt == NULL) count = 0; else if(bt->lchild==NULL&&bt->rchild==NULL) count = 1; else count = Count(bt->lchild)+Count(b

2021-11-11 20:07:52 362

原创 多线程测试(一)

编写一个ThreadTest类,分别通过继承Thread类和实现Runnable接口,两种方式实现两个线程。两个线程执行的任务是实现同一个变量 count 的累加操作,count从1增加到10,每增加1, 在控制台输出 " 执行累加操作的线程的线程名+count 变量的值,输出后该线程 休眠1秒,测试线程操作的相关方法(包括 sleep,interrupt,join)。思路分析:①首先要建立两个线程,一个是继承Thread,另一个是实现Runnable接口(其实两者的本质是一样的,Thread就是实现了

2021-11-07 14:43:14 1916

原创 二叉树的遍历

一、二叉树的递归遍历二叉链表存储二叉树,二叉链表的结点结构如下:template<typename DataType>struct BiNode{ DataType data; BiNode<DataType>*lchild,*rchild;}1、前序遍历递归算法template<typename DataType>void BiTree<DataType>::PreOrder(BiNode<DataType>*bt){

2021-11-05 13:28:36 95

原创 数据结构1014小测

1024小测数组 Q[n]用来表示一个循环队列,front 为队头元素的前一个位置,rear 为队尾元素的位置,计算队列中元素个数的公式为______ 。答案: (rear-front+n)%n解答: 循环队列中,rear-front 的结果可能是负整数,而对一个负整数求模,其结果在不同的编译器环境中可能会有所不同。二维数组 A 中行下标是 10~20,列下标是 5~10,按行优先存储,每个元素占 4 个存储单元,A[10][5]的存储地址是 1000,则元素 A[15][10]的存储地址

2021-10-29 23:14:19 1940

原创 栈队列的实现

两个栈实现队列操作利用两个栈去设计并实现一个自定义队列MyQueue。自定义队列MyQueue应当支持一般队列支持的所有操作(push , pop , peek, empty)。栈应当选择1中的顺序栈,自定义队列可自行考虑是否需要设置头尾指针。简单起见,只需考虑int数据类型的情况。实现MyQueue类:void push(int x)将元素x推到队列的末尾int pop() 移除并返回队列开头元素int peek() 返回队列开头元素int empty() 如果队列为空返回1否则返回0思

2021-10-29 21:56:16 95

原创 循环链表的拼接

两个循环链表拼接成一个链表两个循环链表testA和testB,first1和first2分别是指向循环链表的头指针,编写算法函数merge(Node *first1, Node *first2),其功能是将循环链表testB链接到循环链表testA之后,使链接后的链表仍是循环链表。输出的参考样张如下所示思路:建立两个指针p,q分别遍历到两个循环链表A、B的末尾,p指向B链表的第一个结点(注意是第一个结点,不是头结点),q指向A链表的头结点。代码如下:void merge(Node *first1,

2021-10-29 21:40:49 597

原创 树的前序遍历和后序遍历

非二叉树的前后序遍历采用按层次序来建立树的孩子兄弟表示法(一个指针指向第一个孩子,一个指针指向第一个右兄弟)存储结构,实现前序和后序遍历树的操作,并编写算法求树的深度。输出的参考样张如下所示。PS:①这个样例没有显示深度,此样例深度为4②样例输入采用层次序输入结点对的方式。思路:①首先要明确,此树并非是二叉树,一个结点可能有多个兄弟节点,因此不管是遍历还是深度的计算都要包括所有的兄弟节点。②前序遍历:根节点->前序遍历左子树->前序遍历右子树后序遍历:后序遍历左子树->后序

2021-10-29 21:01:00 1561

原创 KMP算法的应用——碱基序列匹配

;;

2021-10-29 20:31:17 2127

原创 鸢尾花的分类(四种方法)

鸢尾花的分类iris数据集的中文名是安德森鸢尾花卉数据集,含有5个key,分别是DESCT,target_name(分类名称,即四个特征值的名称),target(分类,有150个数值,有(0,1,2)三种取值,分别代表三个种类),feature_names(特征名称,三个种类的名称),data(四个特征值,花萼的长、宽,花瓣的长、宽)。 iris包含150个样本,对应数据集的每行数据。每行数据包含每个样本的四个特征和样本的类别信息,所以iris数据集是一个150行5列的二维表。通俗地说,iris数据集是用

2021-05-23 09:26:23 15533 4

原创 递增三元组

递增三元组(2018年蓝桥杯真题)题目描述:给定三个整数数组A = [A1, A2, … AN],B = [B1, B2, … BN],C = [C1, C2, … CN],请你统计有多少个三元组(i, j, k) 满足:1 <= i, j, k <= NAi < Bj < Ck输入格式:第一行包含一个整数N。第二行包含N个整数A1, A2, … AN。第三行包含N个整数B1, B2, … BN。第四行包含N个整数C1, C2, … CN。对于

2021-04-17 11:28:14 1159 4

原创 日期问题

日期问题(2017年蓝桥杯真题)题目描述小明正在整理一批历史文献。这些历史文献中出现了很多日期。小明知道这些日期都在 1960 年 1 月 1 日至 2059 年 12 月 31 日。令小明头疼的是,这些日期采用的格式非常不统一,有采用年/月/日的,有采用月/日/年的,还有采用日/月/年的。更加麻烦的是,年份也都省略了前两位,使得文献上的一个日期,存在很多可能的日期与其对应。比如 02/03/04,可能是 2002 年 03 月 04 日、2004 年 02 月 03 日或 2004 年 03 月

2021-04-15 19:32:10 126

原创 外星日历

外星日历(2017蓝桥杯真题)题目描述本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。某星系深处发现了文明遗迹。他们的计数也是用十进制。 他们的文明也有日历。日历只有天数,没有年、月的概念。 有趣的是,他们也使用了类似“星期”的概念, 只不过他们的一个星期包含了 9 天, 为了方便,这里分别记为:A,B,C…H,I。从一些资料上看到, 他们的 23 日是星期 E, 他们的 190 日是星期 A, 他们的 343251 日是星期 I。令人兴奋的是,他们居然也预见了“世界末日

2021-04-10 15:24:32 101

原创 9数算式

9数算式(2017年蓝桥杯真题)题目描述本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。观察如下的算式:9213×85674=789314562左边的乘数和被乘数正好用到了 1 ~ 9 的所有数字,每个 1 次。 而乘积恰好也是用到了 1 ~ 9 的所有数字,并且每个 1 次。请你借助计算机的强大计算能力,找出满足如上要求的 9 数算式一共有多少个?注意:总数目包含题目给出的那个示例。乘数和被乘数交换后作为同一方案来看待。运行限制最大运行时间:1s最大运行内存

2021-04-07 15:33:57 749

原创 数列求值

数列求值(2019年蓝桥杯真题)题目描述本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。给定数列1,1,1,3,5,9,17,⋯,从第 44 项开始,每项都是前 33 项的和。求第20190324 项的最后 4 位数字。运行限制最大运行时间:1s最大运行内存: 128M分析:其实这题的思路是很清晰的:设置三个变量储存前三个的数值,一个temp做中间变量来实现数值的前移,但是看到第20190324项这个庞大的数字,就要想到数据溢出的问题了,如此庞大的数字int lo

2021-04-01 19:45:31 560

原创 子串分值

子串分值(2020年蓝桥杯c/c++A组H题)题目描述对于一个字符串 SS,我们定义 SS 的分值 f(S)f(S) 为 SS 中恰好出现一次的字符个数。例如 f(“aba”) = 1,f(“abc”) = 3, f(“aaa”) = 0f(“aba”)=1,f(“abc”)=3,f(“aaa”)=0。现在给定一个字符串 S_{0 \cdots n − 1}S0⋯n−1​ (长度为 nn,1 \leq n \leq 10^51≤n≤105),请你计算对于所有 SS 的非空子串 S_{i \c

2021-03-28 16:42:49 540 1

原创 质数/素数

判断质数的方法总结质数定义:一个大于1的自然数,除了1和它本身外,不能被其他自然数(质数)整除。1、试商法(最简单的方法) :用i=2~m-1之间的整数去试商,若存在某个m能被1与m本身以外的整数i整除(即余数为零),则m不是质数。#include <iostream>#define MAX 100 using namespace std;int main() { int j; for (int i = 2; i <= MAX; i++) { for (j = 2;

2021-03-27 20:54:55 383

原创 判断回文方法总结

判断回文的方法总结1、数字判断法(仅针对数字):利用取余运算来反转数字,再与原数字进行比较,当数值较大时效率较低void huiwen(int i){ int y=i,num=0; while(y!=0) { num=num*10+y%10; y/=10; } if(num==i) cout<<num<<endl;} 2、全部/半部反转判断:对于数字和字符串皆可(若输入的是整型的数字,则可以通过stringstream来将其转换成字符串),利用函数r

2021-03-27 17:27:31 1741 3

空空如也

空空如也

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

TA关注的人

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