C++
哦啦哦啦!
这个作者很懒,什么都没留下…
展开
-
ceil函数(返回大于当前数的最小整数)
头文件:math.h用法:ceil(2.002) //返回3ceil(2.9) //返回3对于一些不确定精度的浮点数而言,该函数十分方便使用原创 2021-03-31 15:17:10 · 970 阅读 · 0 评论 -
PAT中的进制转换问题(万能法)
进制转换的种种类型,归根到底无非是D进制到十进制的转换和十进制到N进制的转换。结合上面的两种方法,可以解决几乎所有进制问题,下面直接给出模板D进制到十进制的转换int x=1103,result=0,radix=1;//x为要转换的数,result存最终结果while(x!=0){ result+=(x%10)*radix; // x/=10; //从右往左取每一位 radix*=d; //d即为D进制}十进制到D进制的转换采用除基取.原创 2020-08-26 19:24:27 · 272 阅读 · 0 评论 -
STL中multiset用法(重复元素集合)
转载自https://blog.csdn.net/sodacoco/article/details/84798621c++语言中,multiset是库中一个非常有用的类型,它可以看成一个序列,插入一个数,删除一个数都能够在O(logn) 的时间内完成,而且他能时刻保证序列中的数是有序的,而且序列中可以存在重复的数。应用#include<string>#include<io...转载 2020-08-15 20:02:35 · 641 阅读 · 0 评论 -
C++中AVL树构建详解
AVL树的定义平衡二叉树由前苏联两位数学家GM.Adelse-Velskil、E.M.Landis提出,因此一般也称作AVL树。AVL树从本质上说仍是一颗二叉搜索树,只是在其的基础上添加了平衡要求,使得树的高度在每次插入元素后仍可以保持O(logn)的级别。所谓的平衡操作指的是对于AVL树的任意结点来说,其左子树和右子树的高度差的绝对值不超过1,其中左子树的高度减去右子树的高度称为该结点的平衡因子。例如,对于下面的三棵树,根结点的平衡因子分别是 -1、2、-2基本操作函数1.结构体因为需要对原创 2020-05-13 20:35:58 · 1237 阅读 · 1 评论 -
DFS解决添加运算符使等式成立问题
思路:因为只可以两两数之间填运算符,所以最多只有八个位置可以填,填充情况分别是:不填、+、-所以可以用DFS填充好八个位置,然后判断当前填充方案的运算结果是否等于x,复杂度为3的8次方但是这题的计算过程很复杂,我采用的方法是先将运算符填充进去构成一个完整的计算表达式,然后将这个字符串求解求解运算表达式的思路是:将表达式中的数字放入num数组,运算符放入op数组,这里num中的元素个数为...原创 2020-05-04 20:28:17 · 624 阅读 · 0 评论 -
DFS求解排列和组合问题
全排列问题题目描述:把1~N这N个整数按不同的顺序摆放,输出所有可能的结果(按字典序从小到大)思路:1.用数组v存放当前的排列;数组hashtable【i】表示i是否已经被使用(即已经在数组中)2.递归边界为当index为n时表示已经填充好一个完整的排列,输出当前排列,然后returnint n;int v[n+5];int hashtable[n+5];//使用前需要全部赋初值0...原创 2020-04-26 22:41:56 · 613 阅读 · 0 评论 -
C++中sscanf和sprintf使用详解
在程序竞赛中字符串处理问题往往十分繁琐,需要各种判定条件等等,写起来麻烦并且代码量很大而sscanf和sprintf是解决这一类问题的杀招,一些繁琐的不同类型数据之间的转换能迎刃而解两者均在头文件cstdio之下,首先看下scanf和printf的写法scanf("%d",&n);//读入一个整型数据printf("%d",n);//输出一个整型数据事实上,上面的写法可以 表示...原创 2020-04-23 21:04:06 · 2660 阅读 · 1 评论 -
cout输出定长数据(不足前补0)
头文件 < iomanip >C++保持4位数,不满4位前面用0表示cout<<setw(4)<<setfill('0')<<x<<endl;//注意这里的setfill中的参数必须是字符,//直接输入数字会报错C保持4位数,不满4位前面用0表示printf("%04d",x); 示例:#include<...原创 2020-04-05 13:05:23 · 3285 阅读 · 0 评论 -
C++中vector定义二维数组
1.利用push_back()实现#include<iostream>#include<vector>using namespace std;int main(){ vector<vector<int> > v; vector<int> a(3,0),b(5,1); v.push_back(a); v.push_back...原创 2019-12-31 20:41:20 · 3521 阅读 · 0 评论 -
如何使用scanf读入string
程序竞赛中经常会遇到多输入输出问题,这时候C++中的cin,cout就会超时,这时就需要c语言中的scanf和printf解决但是,c语言中没有string类型,直接用scanf读入string类型是不正确的...原创 2019-12-18 15:18:20 · 13798 阅读 · 4 评论 -
利用BST性质建立二叉树 C++实现
特殊二叉树的建立(二叉搜索树)首先我们先认识一下二叉搜索树(BST),即任意节点的左节点肯定比该节点小,右节点比该节点大。然后当你中序遍历这棵树的时候,你会惊讶的发现遍历后得到的data是从小到大排序的。给出如下一颗二叉搜索树:中序遍历结果就是1 4 5 6 8 9 13因此对于一个二叉搜索树的建立,只需要判断当前结点的data值和要插入的data值,如果data<root - &...原创 2019-11-28 22:31:46 · 453 阅读 · 0 评论 -
C++ 字符串中删除子字符串之 erase()方法使用详解
1.string.erase(pos,n)其中pos为子字符串起始位置,n是要删除的字符串长度#include<string>#include<iostream>using namespace std;int main(){ string a="ABCDEFGH"; a.erase(1,2); cout<<a<<endl; ret...原创 2019-11-21 21:17:10 · 2183 阅读 · 0 评论 -
C++中substr()函数用法详解
定义substr()是C++语言函数,主要功能是复制子字符串,要求从指定位置开始,并具有指定的长度。如果没有指定长度_Count或_Count+_Off超出了源字符串的长度,则子字符串将延续到源字符串的结尾。——摘自百科词条语法substr(size_type _Off = 0,size_type _Count = npos)一种构造string的方法形式 : s.substr(pos,...原创 2019-11-18 21:35:20 · 209103 阅读 · 2 评论 -
C++ iterator-」first和iterator-」second解析
我们都知道c++中map容器里包含键值和数值,在学习大佬代码时发现it.first和it.second用法,感觉特别难以理解其实c++ 里面的map容器的迭代器里面 有个first 和 second,分别指向键值和数值it.first就是在迭代器中获取map键值,it.second同理举个例子:map<string, string> m;m["one"] = "sdfasf"...原创 2019-11-11 22:38:53 · 9152 阅读 · 2 评论 -
C++中auto关键字和for循环使用详解
转载自https://blog.csdn.net/LiuBo_01/article/details/80752734例题: 编写一段程序,读入一段包含标点符号的字符串,将标点符号去除后输出字符串剩余的部分。代码://编写一个程序,读入一个包含标点符号的字符串,将标点符号去除后输出字符串剩余的部分#include <iostream>#include <cstring&g...转载 2019-11-11 22:24:24 · 8588 阅读 · 0 评论 -
C++STL中queue(队列)使用详解
1.头文件及定义要使用STL中的队列,需要先调用头文件#include < queue >队列遵循先进先出,后进后出,使用上和栈stack类似,解决一些特殊问题很好用具体使用看代码2.队列函数调用函数名使用介绍q.pop()删除queue的队头元素q.front()返回队列的队头元素,但不删除该元素q.back()返回队列的队尾元素,但...原创 2019-11-08 21:45:21 · 4659 阅读 · 0 评论 -
C/C++中为什么给数组初始化赋值为1会出错
刷题时一直ac不了,找了好久好久的bug,一直没发现问题,后来才知道数组直接初始化赋值的时候不能赋值为非0值,因为数组定义的时候默认会把所有值设为0,如果你输入一个非0数,会把下标为0的值赋值为你输入的,其他值仍然是0实例:#include<iostream>using namespace std;int main(){ int num[20]={1}; for(int ...原创 2019-11-05 14:10:37 · 3236 阅读 · 5 评论 -
C++ 结构体中赋初值的几种方法
当我们定义一个结构体后,没有初始化就使用,有很大的概率会使用到垃圾数据,而且这种错误很难发现。况且初始化是编程的一个好习惯,但是和外部初始化不同,结构体中我们会发现不能直接用 x=0 这种方法赋值下面介绍两种在结构体中赋初值方法1.在结构体构造函数中初始化构造函数初始化时,函数名必须和结构体名相同struct st{ int id; int c,m,e,sum; ...原创 2019-10-28 20:55:21 · 7845 阅读 · 0 评论 -
C++中min_element()和max_element()函数
头文件: #include< algorithm >返回值: 两个函数返回的都是迭代器,所以要提取数值的话需要在函数前加上*语法格式: max_element(first,end,cmp);其中cmp为可选择参数(自定义排序可用,默认不需要填)两个函数默认都是从小到大排列, max_element() 输出最后一个值, min_element() 输出第一个值。这里要特别注意:...原创 2019-10-17 23:08:05 · 2651 阅读 · 0 评论