自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

辉小歌的博客

努力学习的小白

  • 博客(68)
  • 资源 (7)
  • 收藏
  • 关注

原创 algorithm头文件下的常用函数--习题

目录问题 A: 求最大最小数 【简单】问题 B: 全排列(字符串) 【简单】问题 C: 数组逆置 【简单】问题 A: 求最大最小数 【简单】http://codeup.cn/problem.php?cid=100000604&pid=0#include<cstdio>#include<cstring>#include<string>#include<iostream>#include<algorithm>using na

2021-03-31 12:42:46 169

原创 深度优先搜索(DFS)相关习题

目录问题 A: 【递归入门】全排列 【简单】问题 B: 【递归入门】组合的输出 【简单】问题 C: 【递归入门】组合+判断素数 【中】问题 A: 【递归入门】全排列 【简单】http://codeup.cn/problem.php?cid=100000608&pid=0#include<cstdio>#include<string>#include<cstring>#include<iostream>#include<algori

2021-03-31 12:16:12 420

原创 第一章:递推与递归 【完结】

目录92. 递归实现指数型枚举94. 递归实现排列型枚举93. 递归实现组合型枚举1209. 带分数717. 简单斐波那契95. 费解的开关1208. 翻硬币116. 飞行员兄弟在用递归的时候可以先画一个递归树来分析。92. 递归实现指数型枚举https://www.acwing.com/problem/content/description/94/题解:先画一个递归树分析。我们可以知道的是每个数我们都有选或不选两种选择。我们画一个当n=3时的递归树。那么我们如何用代码实现呢?我们可

2021-03-30 20:26:19 333

原创 用substr()函数高效的输出一个字符串的所用子串

需要的头文件#include<string>需要的其他东西using namespace std;substr(pos,len) 返回从pos号位开始,长度为len的子串,时间复杂度为O(len)用它来输出一个字符串的所有字串是十分的方便的。

2021-03-30 17:20:12 599

原创 大数取余的原理和模板

对于一个大数取余可以说是常见的题了。今天我们就聊一聊它。代码模板:for(int i=0;i<strlen(s);i++){ ans=(ans*10+s[i]-'0')%n;//n代表我们对几取余}//最后的ans就是我们最终求模的结果。 大数取余的原理: 从字符串的首位开始,对其取余,并将余数存起来与后一位相加,继续取余。其实就是模拟我们手算时的过程:所谓求余不就是除法得到余数的过程,这个程序的算法其实跟我们手动除法的过程是一样的,想想我们怎么笔算的?举个例子.

2021-03-30 14:58:05 1901 4

原创 一个将字符串转换为整数的函数--atoi()

需要的头文件#incldue<stdlib.h>函数原型int atoi(const char *str)参数str : 要转换为整数的字符串。返回值该函数返回转换后的长整数,如果没有执行有效的转换,则返回零。作用:C 库函数 int atoi(const char *str) 把参数 str 所指向的字符串转换为一个整数(类型为 int 型)。案例:...

2021-03-29 20:43:43 892

原创 一个判断字符是不是10进制数的函数------isdigit()

需要的头文件#include <ctype.h>函数原型int isdigit ( int c );isdigit() 用来检测一个字符是否是十进制数字。十进制数字包括:0 1 2 3 4 5 6 7 8 9例子:

2021-03-29 20:35:57 586

原创 其他高效技巧与算法

目录打表活用递推随机选择算法打表打表是一种典型的用空间换时间的技巧,一般指将所有可能需要用到的结果事先计算出来,这样后面需要用到时就可以直接查表获得。打表常见的用法有如下几种:①在程序中一次性计算出所有需要用到的结果,之后的查询直接取这些结果。这个是最常用到的用法,例如在一个需要查询大量Fibonacci数F(n)的问题中,显然每次从头开始计算是非常耗时的,对Q次查询会产生O(nQ)的时间复杂度;而如果进行预处理,即把所有Fibonacci 数预先计算并存在数组中,那么每次查询就只需要0(1)

2021-03-29 09:26:09 159

原创 使用next_permutation()的坑,你中招了么?

目录问题描述解决猜想总结今天在做一道题,结果答案始终不对,思路虽然有点笨吧,但是方法一定是没有问题的。经过一系列的排除,发现是next_permutation()函数的问题。问题描述http://oj.ecustacm.cn/problem.php?id=1301做这道题的时候,一看不就是一个全排列么?。用next_permutation()函数就完了#include<cstdio>#include<algorithm>#include<cmath&gt

2021-03-28 10:13:27 2198 2

原创 用vector写结构体

用vector写结构体首先你要知道的是,结构体不是普通变量,不像 int 型 可以直接的 push_back()结构体需要一个中间的变量,先给这个变量赋值之后。再 push_back()那个中间变量。

2021-03-26 09:42:56 2929

原创 CodeBlocks的一些用法和常见的问题

目录简单的介绍和常用的快捷键CodeBlocks无错误下方出现红色下划线提示简单的介绍和常用的快捷键Ctrl + F9:编译Ctrl + F10:运行上次成功编译后的程序F9:编译并运行当前代码(本人喜欢直接F9)CodeBlocks无错误下方出现红色下划线提示这其实是自动检测单词拼写是否错误的提示,跟word中的红色的下划线的作用几乎是一样。我们在敲代码的过程中会定义一些变量名是英文的简写。导致人家以为我们拼错单词了。解决办法如下:...

2021-03-26 09:08:54 1838

原创 algorithm头文件下的常用函数

目录max()和min()swap()reverse()next_permutation()max()和min()max(x,y) 返回x,y中的最大值。min(x,y) 返回x,y中的最小值。swap()swap(x,y)用来交换两个数的值。reverse()reverse(it,it2)可以将数组指针在 [ it, it2)之间的元素或容器的迭代器在 [ it ,it2)范围内的元素进行反转。next_permutation()next_permutation()给出一个序

2021-03-25 17:04:22 666

原创 pair的常见用法详解

目录前言pair的定义pair中元素的访问pair常用函数实例解析pair的常见用途前言pair是一个很实用的"小玩意",当想要将两个元素绑在一起作为一个合成元素,又不想要因此定义结构体时,使用pair可以很方便地作为一个替代品。也就是说,pair实际上可以看作一个内部有两个元素的结构体,且这两个元素的类型是可以指定的,如下面所示:struct pair{ typeName1 first; typeName2 second;};pair的定义要使用pair需要头文件#include

2021-03-25 16:27:42 4127

原创 stack的常见用法详解

目录stack的定义stack容器内元素的访问stack常用函数实例解析stack的常见用途stack 翻译为栈,是STL中实现的一个后进先出的容器stack的定义需要的头文件#include<stack>需要的其他东西:using namespace std;其定义的写法和其他STL容器相同,typename可以任意基本数据类型或容器。stack<typename> name;stack容器内元素的访问由于栈(stack)本身就是一种后进先出的数据结构

2021-03-25 15:30:34 1397

原创 priority_queue的常见用法详解

目录前言priorithy_queue的定义priority_queue容器内元素的访问priority_queue常用函数priority_queue内元素优先级的设置priority_queue的常见用途前言priority_queue又称为优先队列,其底层是用堆来进行实现的。在优先队列中,队首元素一定是当前队列中优先级最高的那一个。例如在队列有如下元素,且定义好了优先级:桃子(优先级3)梨子(优先级4)苹果(优先级1)那么出队的顺序为: 梨子(4)->桃子(3)->苹果(1

2021-03-25 14:56:19 5899 1

原创 queue的常见用法详解

目录queue的定义queue容器内元素的访问queue常用函数queue的常见用途queue 翻译为队列,在STL中主要则是实现了一个先进先出的容器。queue的定义要使用queue,应先添加头文件:#include<queue>需要的其他东西:using namespace std;其定义的写法和其他STL容器相同,typename可以是任意基本数据类型或容器:queue<typename> name;queue容器内元素的访问由于队列(queue)

2021-03-25 09:45:55 8563

原创 map的常用用法详解

目录map的定义map翻译为映射:也是常用的STL容器。众所周知,在定义数组时(如int array[100] )其实是定义了个从 int 型到 int 型的映射,比如array[0]=25 array[4]= 36就分别是将0射到25、将4映射到36.。一个double型数组则是将int 型映射到double型,例db[0]=3.14,db[1]=0.01。但是,无论是什么类型,它总是将int 型映射到其他类型。这似乎表现出一个弊端:当需要以其他类型作为关键字来做映射时,会显得不太方便。 例如有一本

2021-03-25 08:53:49 7205 4

原创 string的常见用法详解

目录string的定义string中内容的访问string常用函数实例解析在C语言中,一般使用字符数组char str[]来存放字符串,但是使用字符数组有时会显得操作麻烦,而且容易因经验不足而产生一些错误。为了使编程者可以更方便地对字符串进行操作, C++在STL中加入了string类型,对字符串常用的需求功能进行了封装,使得操作起来更方便,且不易出错。需要的头文件:#include <string> //(注意string.h和string是不一样的头文件)需要的其他东西:us

2021-03-24 14:46:00 2353 1

原创 set的相关习题

问题 A: Set Similarityhttp://codeup.cn/problem.php?cid=100000597&pid=0题目说的是:先计算两个集合去重后的交集Nc,然后计算两个元素并集并去重Nt,两者相除。例:1 和 2 集合 交集有 87 101并集有 99 87 101 52/4=0.51 和 3 集合 交集有 99 101并集有 87 101 99 18 5 135 2/6=1/3思路就是求出 a

2021-03-24 11:19:59 184

原创 set的常见用法详解

目录set的定义set容器内元素的访问set翻译为集合,是一个内部自动有序且不含重复元素的容器。在考试中,有可能出现需要去掉重复元素的情况,而且有可能因这些元素比较大或者类型不是int型而不能直接开散列表,在这种情况下就可以用set来保留元素本身而不考虑它的个数。当然,上面说的情况也可以通过再开一个数组进行下标和元素的对应来解决,但是set提供了更为直观的接口,并且加入set之后可以实现自动排序,因此熟练使用set可以在做某些题时减少思维量。需要的头文件:#include<set>

2021-03-24 10:29:05 19387 4

原创 vector相关习题

目录问题B:课程学生名单问题B:课程学生名单http://codeup.cn/problem.php?cid=100000596&pid=1题目分析:用一个vector的容器数组 来保存各个的人名。用定址法,看到学生选的编号,就向对应的容器加入。最后挨个输出。输出前要按字典序排序,自己写一个cmp 用sort排#include<cstdio>#include<vector>#include<iostream>#include<a

2021-03-23 19:37:17 282

原创 vector的常见用法详解

目录vector的定义vector翻译为向量,但是这里使用“变长数组”的叫法更容易理解,也即“长度根据需要而自动改变的数组”。在考试题中,有时会碰到只用普通数组会超内存的情况,这种情况使用vector会让问题的解决便捷许多。另外, vector还可以用来以邻接表的方式储存图,这对无法使用邻接矩阵的题目(结点数太多)、又害怕使用指针实现邻接表的读者是非常友好的写法也非常简洁。需要的头文件:#include <vector>需要的其他东西:using namespace std;

2021-03-23 17:18:44 21501 4

原创 汉诺塔

先看一下二层汉诺塔的一定过程:如果多层的话:通过上面分析你会发现,我们的大致步骤如下:一、先将 n-1 层的汉诺塔 通过 C 移动到 B, 将最地下的一层移到C二、再将B上面的汉诺塔移动同通过 A 移动到 C代码如下:#include<cstdio>void hanoi(int n,char A,char B,char C){ if(n==1) { printf("%c -> %c\n",A,C); } else { hanoi

2021-03-23 14:15:22 360

原创 在蓝桥杯中用excel的小技巧

目录给一个日期加指定的天数计算加过后的日期计算当前日期是星期几给一个日期加指定的天数计算加过后的日期计算当前日期是星期几

2021-03-23 13:41:01 5328

原创 大整数的四则运算

对一道A+B的题目,如果A和B的范围在int范围内,那么相信大家很快就能写出程序。但是如果A和B是有着1000个数位的整数,恐怕就没有办法用已有的数据类型来表示这时就只能老实去模拟加减乘除的过程。怎么样?听起来像是小学生学的东西吧?实际上原理就是小学的,所以不要去害怕这个看上去很高深的东西。此外,大整数又称为高精度整数,其含义就是用基本数据类型无法存储其精度的整数。目录大整数的存储大整数的加法大整数的存储很简单,使用数组即可。例如定义int型数组d[1000],那么这个数组中的每一位就代表了存放.

2021-03-22 20:29:00 989

原创 质因子分解习题

目录问题 A: 完数问题 D: 约数的个数问题 E: 完数与盈数问题 A: 完数http://codeup.cn/problem.php?cid=100000592&pid=0#include<cstdio>#include<cmath>int main(void){ int n; int i,j; while( scanf("%d",&n) != EOF ) { if(n<6) continue; else {

2021-03-22 17:44:36 159

原创 sqrt()函数的详解和用法

sqrt()函数是我们经常使用的一个函数。下面我就详细的介绍它的一些用法和使用规范所需的头文件#include<math.h>函数原型double sqrt(double x);作用:sqrt() 用来求给定值的平方根常见的使用错误输出 36的开根号忽略了sqrt()函数的返回值是 double型。导致出错解决办法如下:常见的使用sqrt()函数的规范写法例如: 我们要判断一个数是不是质数,只需要判断 2 ~ n开根号 之间有没有可以整除的数就可以了错误的.

2021-03-22 15:24:02 301884 20

原创 质因子分解

所谓质因子分解是指将一个正整数n写成一个或多个质数的乘积的形式,例如6=2x3, 8=2x2x2, 180=2x2x3x3x5,或者我们也可以写成指数的形式,例如6=21x31, 8= 23, 180= 22 x32x51.显然,由于最后都要归结到若干不同质数的乘积,因此不妨先把素数表打印出来。而打印素数表的方法上面已经阐述,下面我们主要就质因子分解本身进行讲解。注意:由于1本身不是素数,因此它没有质因子,下面的讲解是针对大于1的正整数来说的,而如果有些题目中要求对1进行处理,那么视题目条件而定来

2021-03-22 14:22:30 717

原创 数学问题->分数的四则运算

问题 A: 分数矩阵思路一:这个思路是对的,不过题目中的数据太大超时了。时间复杂度O(n2)#include<cstdio>#include<cmath>double a[50005]={0};int main(void){ int N; int i,j; a[1]=1; a[2]=3; while(1) { scanf("%d",&N); for(i=3;i<=N;i++) { double sum=0; fo

2021-03-22 10:49:49 229

原创 分数的四则运算

分数的四则运算指的是分数的加减乘除目录分数的表示分数的表示

2021-03-22 09:51:14 1353

原创 跟素数相关的题

目录问题 A: 素数问题 A: 素数http://codeup.cn/problem.php?cid=100000591&pid=0#include<cstdio>bool a[10005]={false};int main(void){ a[2]=true; for(int i=2;i<=10005;i++) { if(a[i]==false) for(int j=i+i;j<=10005;j=j+i) { a[j]=true;

2021-03-22 08:35:07 182

原创 two pointers

目录什么是two pointers什么是two pointerstwo pointers是算法编程中一种非常重要的思想,但是很少会有教材单独拿出来讲,其中一个原因是它更倾向于是一种编程技巧,而长得不太像是一个“算法”的模样。two pointers的思想十分简洁,但却提供了非常高的算法效率,下面就来一探究竟。以一个例子引入:给定一个递增的正整数序列和一个正整数M,求序列中的两个不同位置的数a和b,使得它们的和恰好为M,输出所有满足条件的方案。例如给定序列{1,2, 3,4,5, 6)和正整数M=

2021-03-21 16:46:53 379

原创 力扣 : 283. 移动零

方法一:void moveZeroes(int* nums, int numsSize){ int zero=0; for(int i=0;i<numsSize;i++) { if(nums[i]==0) { zero++; } else { nums[i-zero]=nums[i]; } } for(int i=numsSize-zero;i<numsSize;i++) { nums[i]=0; } for(int i=0;i&lt.

2021-03-21 10:03:16 126

原创 力扣: 231. 2的幂 【位运算】

题解:你通过上图会发现:一个数只要是2的幂次方。那么经过n次除以2其结果终为1且这个数对于2取余的结果一直是0那么代码如下:bool isPowerOfTwo(int n){ if(n==0) return false; while(n%2==0) { n=n/2; } if(n==1) { return true; } else { return false;.

2021-03-20 20:31:20 171

原创 力扣: 88. 合并两个有序数组

思路:用双指针法void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n){ int *arr=(int *)malloc(sizeof(int)*(m+n)); int i=0; int j=0; int k=0; while(i<m&&j<n) { if(nums1[i]<nums2[j]) .

2021-03-20 20:10:57 197

原创 力扣 136. 只出现一次的数字 【异或运算】

最简单的思路:用数组的每一个数字遍历整个数组来统计每个数字的个数。当个数为1的时候输出它。很显然的是这种方法的时间复杂度为O(n2)那么有没有一种快速的方法呢?用位运算。用异或来求就方便的多了。我们先来了解一下异或的性质:a^ b ^ a= ba^ a ^ c ^ b^ b=c你会发现经过异或操作偶数个的数字都会抵消掉了。那么我们就可以用这种方法来挨个异或我们数组的所有元素。那么最后的结果就是单数个的数字,即我们所需要的结果。代码如下:int singleNumber(int* n

2021-03-20 19:54:14 155

原创 力扣: 268. 丢失的数字

思路1:用bool数组标记数字是否出现,输出没有出现的数字。注意bool数组要比nums数组大1,防止少的是最后一个元素int missingNumber(int* nums, int numsSize){ bool *a=(bool *)malloc(sizeof(bool)*(numsSize+1)); int i; for(i=0;i<numsSize+1;i++) { a[i]=false; } for(i=0;i&lt..

2021-03-20 14:36:50 154

原创 力扣:169. 多数元素

思路:最简单的思路是hush的定址法统计各个数字的个数。最后遍历hush输出数量最多的。这显然是非常的耗费空间。因为题目中并没有说明各个数字的大小的取值范围。那么我们换一种方法: 用栈来解决问题例如:由上图我们可以得出以下的三个结论:栈为空入栈栈顶元素和与元素相等入栈栈定和元素不相等出栈其实用通俗易懂的话来说就是挨个比较不同的抵消了。那么留下来的就是数量最多的。注意:题目中有一个条件是多数元素的个数大于数组的1/2,正是因为这样才可以用这种方法。如果不是那么该方法不能使用。.

2021-03-20 13:54:07 71

原创 leetcode:242 : 有效的字母异位词

题解:我们可以用一个数组来统计字符串中各个字母出现的次数。通过比较各自的统计数组的相同与否来判断是不是字母异位词有题目可知道字母都是小写的,所以统计的数组大小为26即可。bool isAnagram(string a,string *b){ int a_count[26]={0}; int b_count[26]={0}; int i; for(i=0;a[i]!='\0';i++) { a_count[a[i]-'a']++; } for(i=0;b[i]!='\0';i++.

2021-03-20 13:04:59 129

原创 最大公约数与最小公倍数

目录最大公约数最大公约数正整数a与b的最大公约数是指a与b的所有公约数中最大的那个公约数,例如4和6的最大公约数为2, 3和9的最大公约数为3.一般用gcd(a, b)来表示a和b的最大公约数而求解最大公约数常用欧几里得算法(即辗转相除法).方法一、辗转相除法 欧几里得算法基于下面这个定理:设a、b均为正整数,则gcd(a, b)=gcd(b, a % b).由上面这个定理可以发现,如果a<b,那么定理的结果就是将a和b交换;如果a>b,那么通过这个定理总可以将数据规模变小,并且减

2021-03-19 20:07:04 810

用c语言写的一个推箱子游戏.rar

用c语言写的一个推箱子游戏

2021-08-12

打字母压缩文件.rar

用c语言写的图形化的打字游戏

2021-08-11

打单个字母c语言代码.rar

打字母游戏c语言代码

2021-08-11

EasyX_20210730.exe

EasyX库安装包

2021-08-10

童晶学游戏配套的全套代码.rar

童晶游戏配套书籍全套代码

2021-08-10

图书馆管理系统.rar

图书管理系统,有管理登录,学生登录,增删改查等一些功能

2021-06-18

qq宠物(c语言).rar

用C++写的一个养成类游戏,类似于精武堂或者QQ企鹅

2021-02-21

空空如也

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

TA关注的人

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