自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 栈的简单应用---括号匹配和表达式(逆波兰表达式和中缀表达式)的计算

1.括号匹配算法思路:从左往右依次扫描括号串,如果遇到左括号串如 (, [ ,{ ,将它们入栈,如果遇到右括号串如 ) , ], } , 则从栈中出栈一个左括号,并检测是否于该右括号匹配。该思路有三种不匹配的情况,一是括号不匹配,二是扫到右括号时左括号栈已经为空,三是整个字符串扫描完毕后,左括号栈中依然还有左括号未出栈。如果以上三种情况都不满足,则说明该括号串是匹配的/* * 判断括号字符串是否匹配 * */#include<iostream>#include<string&g

2022-03-30 16:16:39 541

原创 数据结构--顺序表和单链表

顺序表的基本操作//顺序表静态分配内存空间的情况#include<bits/stdc++.h>using namespace std;const int maxsize = 100;//定义一个顺序表typedef struct{ int data[maxsize]; int len;//顺序表的长度}Seqlist;//初始化一个顺序表bool InitSeqlist(Seqlist &L){ for(int i = 0;i<maxsize;i

2022-03-12 22:27:34 1914

原创 洛谷---P1553 数字反转(升级版)

题目描述:给定一个数,请将该数各个位上数字反转得到一个新数。这次与NOIp2011普及组第一题不同的是:这个数可以是小数,分数,百分数,整数。1.整数反转是将所有数位对调。2.小数反转是把整数部分的数反转,再将小数部分的数反转,不交换整数部分与小数部分。3.分数反转是把分母的数反转,再把分子的数反转,不交换分子与分母。4.百分数的分子一定是整数,百分数只改变数字部分。题目输出要求:所有数据:25%s是整数,不大于20位25%s是小数,整数部分和小数部分均不大于10位25%s是分数,分子和

2021-11-01 18:41:33 269

原创 2-路归并排序(二分思想)

归并排序是一个很经典的题目,通常最简单的做法是利用二分和递归的思想来完成。以C语言网上的题目为例:归并排序//使用二分递归的思想进行归并排序#include<bits/stdc++.h>using namespace std;const int maxn = 1e5+5;int a[maxn];//合并,注意L2 = R2+1, L2与R2紧紧相邻void Merge(int a[],int L1,int R1,int L2,int R2){ int i = L1;

2021-09-18 09:59:52 250

原创 小白也能写前端?推荐一款超实用的app----JsHD调试器,助你写出炫酷的网页!

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、JsHD调试器是什么?二、JsHD调试器的功能1.引入库2.读入数据总结前言当下这几年,作为前端开发的核心编程语言—javascript,占据着前端开发产业的半壁江山,同时随着高质量的网页需求量不断增大,javascript程序员与日俱增。我们可以看看编程语言统计机构SlashData的统计数据可以看到,js是当下最为流行的几种编程语言的之一。为此,我这里向大家推荐一款超级实用的前端编程调试app—JsHD调试器

2021-05-18 17:51:41 1895

原创 C++STL----string篇

C++中STL(Standard Template Library,标准模板库), 我一直视为C++中十分霸道的核武器(虽然这么说有点夸张),但是如果我们把STL灵活地运用到编程中去,我认为对我们的解题很有帮助。一直刷题到现在,我一直想总结一下我在做题中经常使用的一些STL容器和函数。我将分成几大部分,分别是string(字符串),set(集合),vector(翻译为向量,但是实际上是变长数组),map(映射),algorithm(我愿称它为算法库),stack(栈),queue(队列)等,在实战中,必须要

2021-05-10 15:41:22 181

原创 关于约瑟夫环问题的思考(数组做法)

1

2021-05-10 10:11:13 360

原创 动态规划---最长公共子序列和最长公共子串

说到动态规划,不得不说到经典的最长公共子序列(Longest Common Sequence)问题和最长公共子串(Longest Common Substring),都被称为LCS问题其中最长公共子串是最长公共子序列的衍生问题,我们今天来重点讨论一下这两个问题。首先我们先区分一下最长公共子序列和最长公共子串,直接举一个例子就能明白。比如给你两个字符串分别数adminos和admins,请问它们的最长公共子序列和最长公共子串分别是什么嘞?最长公共子序列:admins最长公共子串:admin通过比较,

2021-05-08 18:13:40 766

原创 算法笔记读书思考---二分查找

对于一个递增序列,我们要查找这个序列中某个元素的下标位置。如: 在2 5 6 8 22 34 225…中,我们想找到数字5的位置最简单的思路是:我们可以通过循环遍历这个序列,来依次比对数字5,如果找到了则停止遍历。这种思路在这个序列的元素个数不是很大的时候,是非常有效的,但一旦涉及数据规模比较大的时候,这种思路写出来的程序就很容易超时崩溃。今天我们来讨论一个很重要的算法思路----二分,所谓二分顾名思义就是在一次操作中,我们把数据分成两部分来处理,这种思路大大减少了程序的时间复杂度。二分查找我们可

2021-05-03 19:40:49 81

原创 P2550 [AHOI2001]彩票摇奖和P2615 [NOIP2015 提高组] 神奇的幻方(洛谷oj)

P2550 [AHOI2001]彩票摇奖题目描述:思路:这道题思路很简单,就是先让你输入一个固定的中奖号码,再输入n行彩票号码(即小明买了n张彩票),将每行彩票号码与中奖号码进行比对,记录彩票号码中出现的中奖号码数字的次数,比如例子12 8 9 23 1 16 7与中奖号码23 31 1 14 19 17 18比对,出现了23和1这两个数字,根据题目要求该号码获得了五等奖,即在输出数组中的a[5]处加1,表示中了一次五等奖;同理,11 7 10 21 2 9 31中只有中奖号码数字31出现了1次,根

2021-04-29 20:37:59 387

原创 洛谷oj刷题记录----数组篇

今天开始正式刷洛谷了,由于今天时间不够,只花了点时间刷了10道数组篇的题,这里写一篇博客来记录一下这十道题的题解。1.小鱼比可爱#include<bits/stdc++.h>using namespace std;const int maxn = 101;int a[maxn];int flag[maxn];int main(){int n;while(scanf("%d",&n)!=EOF){ //输入数组 for(int i = 0;i<n

2021-04-27 20:41:18 470

原创 算法笔记读书思考---散列

散列所谓散列,就是元素通过一个函数转化为整数,使得该整数可以尽量唯一地代表这个元素。我们可以把这个转化函数记为:H(),把这个元素记为key,那么这个元素转化后的整数为H(key)。常用的散列函数有直接定址法,平方取中法,除留取余法等方法。今天我想着重讨论的是直接定址法,这是散列函数中我认为最常用,也是最实用,建议大家掌握。直接定址法其实就是指的数恒等变换即H(key) = key,这个在实际问题中经常会用到,说得直白一点我们在对数组进行处理时,有时会把这个元素(key)当做数组的下标,而这个操作就是

2021-04-25 20:39:20 104

原创 2020年第十一届蓝桥杯-----整除序列(递归做法)

问题描述有一个序列,序列的第一个数是 n,后面的每个数是前一个数整除 2,请输出这个序列中值为正数的项。输入格式输入一行包含一个整数 n。输出格式输出一行,包含多个整数,相邻的整数之间用一个空格分隔,表示答案。样例输入20样例输出20 10 5 2 1数据范围对于 80% 的评测用例,1 ≤ n ≤ 109对于所有评测用例,1 ≤ n ≤ 1018思路:这是一道很简单的题,也算是蓝桥的水题吧,题目的要求就是输入一个数n,让它一直除以2,一直除到不是整数为止,实际上就是除到1为止。这

2021-04-17 20:16:50 651

原创 常用的求素数,最大公约数,分解质因数的板子

素数关于素数的编程题屡见不鲜,今天我总结了一下关于求素数的几种实用的程序模板首先关于素数我们明确一点,素数是只能被1或自己本身所整除的数(1除外),而其他非素数们都有其他的因数能把它们整除,这里直接可以告诉一个结论:这些非素数们因数的大小分布范围有两种情况1.所有因数都不大于这个数的算术平方根例如4,除了本身和1之外,它有一个因数就是2,而这个2是等于4的算术平凡根的2.存在一个因数大于这个数的算术平方根,其余因数都小于这个数的算术平凡根例如10,除了本身和1以外,它有两个因数是2或5,2是小于

2021-04-15 19:36:14 271

原创 题目 1575: [蓝桥杯][算法提高VIP]递归倒置字符数组以及getchar()的重要性

上次讲了递归,这次这道题一样可以用递归来求解,下面就是我对这道题的理解,分为了非递归的做法和递归的做法。题目描述非递归的思路:看到这道题的描述,题目要求很简单,无非就是让你把第一个字母和最后一个字母交换,第二个字母和倒数第二个字母进行交换,以此类推。通过这点我们发现一个规律,就是这道题就是让你交换字符数组中a[i]和a[n-i-1]的位置(n为字符串的个数),当然我还要考虑n为偶数或奇数的情况。例如,字符串为abcde,字符串的长度为5(n为奇数的情况),当a[i]为字符c的时候,也就是i = 2的时

2021-04-13 16:28:30 140

原创 对递归问题的一些思考

1

2021-04-11 16:23:09 256

原创 算法笔记读书思考---日期识别和进制转化(以及在蓝桥杯中的应用)

1.日期处理日期处理问题一直是蓝桥杯中的一个经典模拟类型题的考点。对于日期处理问题,我们需要考虑一些细节问题。我大致罗列了最基本的三点:1.对闰平年的处理(实际上是对闰平年2月份28天和29天的考虑)2.对大月小月的处理(大月31天,小月30天)3.如果处理日期之间的差值天数,还要考虑满当月的天数后,月份要加1,同时天数要重新置为下一个月1号;当月份满12月时,年份要加1,月份要重新置为下一年的1月。这三点是日期模拟题中必须要考虑的要点,我整理了一下胡凡著的算法笔记中日期识别中的程序源码。本题是

2021-04-09 21:36:02 337 1

原创 题目 1545: [蓝桥杯][算法提高VIP]现代诗如蚯蚓

题目描述:算法思路:看到这题是字符串问题就不自觉地想用string头文件下的substr()函数来解决问题。从截取返回1个字符开始,截止到整个字符串。如果截取返回一个字符,那我们就连接len(len为字符串的长度)个该字符,然后比对原字符串,如果一样就说明可以完全截取。举个例子,如果原串为abab,第一轮循环,即substr(0,1)时,我们返回了字符a,字符串长度为4,那我们就连接4个a,得到的连接串是aaaa,比对原串,肯定是不相等的;继续第二轮循环,即substr(0,2)时,我们返回了字符串ab

2021-04-09 19:15:38 112

原创 C++中string类型的字符串和字符数组之间的转化

string类型的字符串和字符数组之间的转化我们在做题中很有可能会需要用到string类型的字符串与字符数组相互转化,下面介绍很方便的转化方法1.string字符串转化为字符数组,使用c_str()

2021-04-08 10:14:28 2684

原创 题目 1644: [蓝桥杯][算法训练VIP]最长字符串

题目描述#include<cstdio>#include<string>#include<iostream>using namespace std;const int maxn = 1e2+25;char a[maxn][maxn];int main(void){ int index = 0; int flag; string s; int mx = -1; while(cin.peek()!=EOF&&cin

2021-04-08 10:12:55 130

原创 蓝桥杯入门题--字符串的输入和输出函数

题目描述:本题是一个很简单的入门题,但还是有一些细节要注意,详细内容放在代码里。#include<cstdio>#include<string>#include<iostream>using namespace std;void GetReal(double n){ //%g将小数后面多余的0给去掉 printf("%g\n",n);}void GetString(string s){ //既然题目要求我们用printf打印,可以使

2021-04-06 18:48:47 121

原创 第十届蓝桥杯c/c++B组---试题F和试题H

1.题目描述一个很简单的题,唯一注意的是对评测用例的规模要进行考虑,最后的相加结果可能超过了int型所能表示的范围#include<cstdio>using namespace std;typedef long long LL;bool fun(int n){ while(n){ int n1 = n%10; if(n1==0||n1==1||n1==2||n1==9){ return true; } n/=10;

2021-04-05 20:22:36 59

原创 C++-----对string库的一些思考

String库c++专门定义了一个string类型,专门来处理字符串,来弥补字符数组对字符串操作的不便。用string类型声明的字符串,具有c++中流的特性。我具体使用两道题来分析,做题中遇到需要string处理以及它包括的很实用的函数。1.string声明的字符串可以通过下标来访问#include<cstdio>#include<string>#include<iostream>using namespace std;int main(){string

2021-04-05 15:48:38 131

原创 C++STL练习--对sort函数的思考

sort()sort()函数是c++标准模板库(STL)中algorithm头文件下的一个重要函数,它的作用是用来进行排序,用法比c语言中的qsort方便得多,同时时间复杂度也较低写法:sort(首元素地址(必填),尾元素地址的下一个地址(必填),比较函数(非必填));本人认为sort函数强大之处在于十分灵活,它提供了一个比较函数,能让程序员自定义一些比较方式,完成更多地灵活比较,同时如果不填比较函数,则将会按照默认的升序对元素进行排列。以c语言网上的两道题来举例:1.美国大选题目思路很简单,

2021-04-04 10:58:14 116

原创 题目 1554: [蓝桥杯][算法提高VIP]素数求和

题目 1554: [蓝桥杯][算法提高VIP]素数求和题目描述:本题是一个很简单的素数求和问题,唯一的可能考察点可能是对于算法时间复杂度考察,怎样才能使程序运行不超过限制,我这里使用了埃氏筛法进行求素数和,最终就AC了。这里注意要使用长整型long long#include<cstdio>using namespace std;const int maxn =2e6;//2000000bool p[maxn]={0};typedef long long LL;int main(

2021-04-02 20:42:37 113

原创 题目 1553: [蓝桥杯][算法提高VIP]笨小猴

题目描述:算法思路:本题我利用的是数组的知识来解决,我先把输入的字符串存储在字符a数组中,创建一个字符b数组,存储不相同的字符,再创建一个num数组来存储每个字符出现的次数(这里num数组中元素我初始化为1,因为本程序是重复一次,num就再加1,刚好对应该字符出现两次)。最后再对num数组中的元素进行排序,得到最大值和最小值只差,再判断是否是质数,本题就得以解决。第一步:现将a数组的第一个元素e放到b数组中的b[0]位置b[0] = a[0];第二步:对a数组从1开始取字符与b数组中的元素进行

2021-03-30 21:45:50 147

原创 第十一届蓝桥杯省赛c/c++b组第三场--日期识别

日期识别算法思路:使用c++的STL库中的substr函数和string函数,对输入的字符串中的数字和字符进行分段比较,最终得到结果#include<cstdio>#include<iostream>#include<string>using namespace std;int main(void){ //将月份字符串全部赋到string流str中 string str = "JanFebMarAprMayJunJulAugSepOctNov

2021-03-28 22:07:58 384

原创 题目 1633: [蓝桥杯][算法训练VIP]数的统计

题目 1633: [蓝桥杯][算法训练VIP]数的统计题目描述:我的思路:我使用了三个一维数组,a[maxn],num[maxn],b[maxn],a数组存放输入进去的数据,num数组存放的是对原数据进行比较处理,剔除相同数据后的数据,b数组存放对应num数组中数字出现的次数。最后将num数组和b数组按格式打印。该题就能得到解决。#include<cstdio>#include<cstring>#include<algorithm>using namespac

2021-03-27 14:41:17 161

原创 题目 1532: [蓝桥杯][算法提高VIP]数组输出

1532: [蓝桥杯][算法提高VIP]数组输出这是一道很简单的题,但是在c语言网oj通过率较低,这是一道很坑的题。题目要求说输出该绝对值最大的元素,估计很多人就是直接输出的该元素,实际上最后结果是要输出该元素的绝对值。#include<cstdio>#include<cmath>using namespace std;int a[3][4];int main(void){ //输入二维数组 for(int i = 0;i<3;i++){

2021-03-24 21:44:22 206

原创 题目 1537: [蓝桥杯][算法提高VIP]栅格打印问题

题目 1537: [蓝桥杯][算法提高VIP]栅格打印问题:#include<cstdio>using namespace std;int main(void){ int n,m; int countn; while(scanf("%d %d",&n,&m)!=EOF&&n>0&&m>0){ //外层循环控制行数 for(int i = 0;i<n;i++){ //内层循

2021-03-24 21:30:51 113

原创 PAT算法笔记1

进制转化十进制转化为其他进制除基取余法:如果要转化为D进制,则将待转化数除以D,然后将余数低位存储(一般用数组进行存储),而商则继续除以D,重复上面的操作,直至商为0时,停止操作。最后将数组逆序输出就能得到D进制数如果将9转化为二进制数9%2 商为4,余数为14%2 商为2,余数为02%2 商为1,余数为01%2商为0,余数为1所以9的二进制数为1001基于这个循环特性,我们可以用do{}while()循环,先取余一次,判断商是否为0例题:PAT B1002 D进制

2021-03-21 23:00:10 151

原创 题目 1483: [蓝桥杯][算法提高VIP]数组替换

题目 1483: [蓝桥杯][算法提高VIP]数组替换因为刚学了队列就头脑一热,决定就用队列来做了,但没想到遇到了很多麻烦,但最终还是解决了。这题用队列来做确实不太好,我只是为读者提供一种算法思路,仅供参考。算法思路:先用两个数组a,b存储输入的两行数,在初始化两个队列,将a数组的前m1个元素压入que队列,b数组前n1个元素压入que1队列,利用队列先进先出(FIFO)的特性,分别将其赋值到c数组,最后打印c数组,就得到了答案。#include<cstdio>#include&lt

2021-03-19 21:21:52 96

原创 三种求最大公约数的算法思路

三种求最大公约数的算法思路1.更相减损术让这两个目标数中较大的数减去较小的数,一直减到两数相等,这个相等的数就是最大公约数#include<cstdio>using namespace std;int f(int n,int m){ while(n!=m){ if(n>m){ n = n-m; } else if(n<m){ m = m -n; }

2021-03-18 18:26:36 576

原创 题目 1487: [蓝桥杯][算法提高VIP]不同单词个数统计

题目 1487: [蓝桥杯][算法提高VIP]不同单词个数统计编写一个程序,输入一个句子,然后统计出这个句子当中不同的单词个数。例如:对于句子“one little two little three little boys”,总共有5个不同的单词:one, little, two, three, boys。说明:(1)由于句子当中包含有空格,所以应该用gets函数来输入这个句子;(2)输入的句子当中只包含英文字符和空格,单词之间用一个空格隔开;(3)不用考虑单词的大小写,假设输入的都

2021-03-18 15:22:11 260

原创 删除数组中的0元素

删除数组的0元素的思路:在CompactIntegers函数中创建一个b数组,直接将我们的目标数组非0值放到b数组,然后直接打印b数组中的非零元素,同时用一个计数变量t,这就是非零元素的个数。#include<cstdio>using namespace std;const int maxn = 101;int a[maxn];int b[maxn];int CompactIntegers(int a[],int n){ int t = 0; for(i...

2021-03-17 22:16:46 3195

空空如也

空空如也

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

TA关注的人

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