
C/C++
flash_gogogo
这个作者很懒,什么都没留下…
展开
-
UVA12096,STL stack和set,Map的综合运用
&emsp;紫书的STL介绍,比较抽象,教我们怎么表示一些抽象的集合并进行一些简单的操作,其中Set_Set_ID和vector Set_Set;是关键,然后关于set_union,set_intersection在下面链接中有介绍> http://blog.chinaunix.net/uid-9950859-id-99130.html#include <iostream> #include原创 2017-04-08 23:03:18 · 299 阅读 · 0 评论 -
直线上的点(扩展欧几里得算法)
描述下问题:求直线ax+bx+c=0上有多少个整点(x,y)满足x-[x1,x2],y-[y1,y2]。 根据数论的理论,要求ax+bx=-c的一个解(x0,y0),先要求出ax+bx=gcd(a,b)的一个解(x1,y1),然后根据gcd(a,b),记作g,判断它与c的倍数,由(x1,y1)来得到解(x0,y0),扩展欧几里得算法就是求ax+bx=gcd(a,b)的一个解的。 边界条件和欧几里原创 2017-07-25 12:49:13 · 732 阅读 · 0 评论 -
最小费用最大流问题
基于网络最大流问题,进一步提出的最小费用问题,费用权值和最大流问题的容量限制是两个概念,实质上这个问题就是求图的加权最短路,只是要在最大流的前提下实现。所以要用Bellman-Ford算法找增广路的同时计算最小费。 下面是紫书中求最小费最大流的模板`const int maxn = 2000 + 10;const int INF = 1000000000;struct Edge { int原创 2017-08-03 17:26:32 · 3037 阅读 · 0 评论 -
C++ STL priority_queue
priority_queue 对于基本类型的使用方法相对简单。他的模板声明带有三个参数,priority_queue#include <iostream> #include <queue> using namespace std; int main(){ priority_queue<int,vector<int>,less<int> >q;//使用priority_queu原创 2017-08-21 10:54:13 · 232 阅读 · 0 评论 -
STL中string用法总结
1.数值类型转换为string1.1使用函数模板+ostringstream使用函数模板将基本数据类型(整型、字符型、实型、布尔型)转换成string。//ostringstream对象用来进行格式化的输出,常用于将各种类型转换为string类型//ostringstream只支持<<操作符template<typename T> string toString(const T& t){转载 2017-08-15 16:45:14 · 2912 阅读 · 0 评论 -
初始化二维vector的方法
初始化二维vector,为r*c的vector,所有值为0.1.直接用初始化方法(刚开始没想到)“vector2.用resize()来控制大小vector转载 2017-08-15 21:27:35 · 1177 阅读 · 0 评论 -
STL中的vector和queue操作的区别
主要是记录下自己的使用STL的错误。。 vector有以下这些功能,注意pop_bcak去掉的是最后一个元素,而queue的pop去掉的是首元素,自己经常搞混了。。 1.push_back 在数组的最后添加一个数据 2.pop_back 去掉数组的最后一个数据 3.at 得到编号位置的数据 4.begin 得到数组头的指针 5原创 2017-08-28 15:19:01 · 9545 阅读 · 2 评论 -
矩阵旋转
首先是要写交换的函数,不需要中间变量的话可以用异或 原理如下:a = 9;b = 11;a=a^b; 1001^1011=0010b=b^a; 1011^0010=1001a=a^b; 0010^1001=1011a = 11;b = 9;然后就是旋转部分:这里记录下通用的顺时针和逆时针旋转矩阵的方法 顺时针旋转: first reverse up to down, then s原创 2017-09-01 11:30:18 · 369 阅读 · 0 评论 -
C++的bitset(位操作使用)
有些程序要处理二进制位的有序集,每个位可能包含的是0(关)或1(开)的值。位是用来保存一组项或条件的yes/no信息(有时也称标志)的简洁方法。标准库提供了bitset类使得处理位集合更容易一些。要使用bitset类就必须要包含相关的头文件。在本书提供的例子中,假设都使用了std::bitset的using声明:[cpp] view plain copy转载 2017-09-02 10:27:25 · 7362 阅读 · 1 评论 -
动态规划的定义和举例理解
动态规划的本质不在于是递推或是递归,也不需要纠结是不是内存换时间。 理解动态规划并不需要数学公式介入,只是完全解释清楚需要点篇幅…首先需要明白哪些问题不是动态规划可以解决的,才能明白为神马需要动态规划。不过好处时顺便也就搞明白了递推贪心搜索和动规之间有什么关系,以及帮助那些总是把动规当成搜索解的同学建立动规的思路。当然熟悉了之后可以直接根据问题的描述得到思路,如果有需要的话再补充吧。 动态规划是原创 2017-09-30 23:41:35 · 574 阅读 · 0 评论 -
Eratosthenes筛法(素数筛法)
对于数论的一些题目,常常要打素数表。 素数筛法的思想:对于不超过n的每个非负整数p,删除2p,3p,4p,…,当处理完所有数之后,还没有被删除的就是素数。 算法复杂度O(n)=nlognvoid sushu_1(int n){ memset(vis, 0, sizeof(vis)); for (int i = 2; i <= n;i++) for (int j = 2原创 2017-07-24 15:25:00 · 1339 阅读 · 0 评论 -
根据中序、前序(后序)输出树的后序(前序),不重建树
不重建树输出另一个遍历顺序,主要是依据规律: 1、根据前序中序得到后序 因为每个递归阶段的前序的首节点肯定是根节点,所以每次遍历中序找到与前序首节点相同的位置,分成左右部分,左边继续找前序的下一个节点(挨着首节点的右边第一个节点一定是下一层左边的节点),遍历i个位置。右边则从mid+i+1开始遍历中序找右边的根节点(前序的首节点+i+1一定是下一层的右边的节点),然后递归即可,当可遍历的长度为0原创 2017-07-18 20:10:12 · 391 阅读 · 0 评论 -
UVA540 STL中队列的使用
这题让我们熟悉了STL中队列的使用,和上一篇博客中提到的集合的嵌套类似,这个题目中设计到了队列的嵌套,所以可以用map容器给不同的队列映射一个ID来区分。 关于queue容器的使用介绍 题目如下: Queues and Priority Queues are data structures which are known to most computer scientists. The Te原创 2017-04-09 14:24:47 · 334 阅读 · 0 评论 -
异或用法(转)
异或用法(转)转自:https://www.lijinma.com/blog/2014/05/29/amazing-xor/什么是异或?Wikipedia的解释:在逻辑学中,逻辑算符异或(exclusive or)是对两个运算元的一种逻辑析取类型,符号为 XOR 或 EOR 或 ⊕(编程语言中常用^)。但与一般的逻辑或不同,异或算符的值为真仅当两个运算元中恰有一个的值为转载 2016-08-13 00:39:25 · 590 阅读 · 0 评论 -
C编程需要注意的诸多事项
前言:这是一年前我为公司内部写的一个文档,旨在向年轻的嵌入式软件工程师们介绍如何在裸机环境下编写优质嵌入式C程序。感觉是有一定的参考价值,所以拿出来分享,抛砖引玉。转载请注明出处:http://blog.youkuaiyun.com/zhzht19861011/article/details/45508029摘要:本文首先分析了C语言的陷阱和缺陷,对容易犯错的地方进行归纳整理;分析转载 2016-03-18 17:09:59 · 11506 阅读 · 0 评论 -
UVA11988(破损键盘) 使用数组模拟链表插入
开始刷数据结构相关的题了,在笔试和面试过程中如果要写出指针形式的链表时间上可能不够。该题很好地训练了怎么使用数组来模拟链表 破损的键盘(又名:悲剧文本)(Broken Keyboard(a.k.a. Beiju Text), UVa 11988) 你有一个破损的键盘。键盘上的所有键都可以正常工作,但有时Home键或者End键会自 动按下。你并不知道键盘存在这一问题,而是专心地打稿子,甚至原创 2017-04-14 19:39:56 · 2130 阅读 · 1 评论 -
UVa 548 Tree(DFS) 根据中序和后序重建二叉树,数组实现和指针实现
题目如下: 给一棵点带权(权值各不相同,都是小于10000的正整数)的二叉树的中序和后序遍 历,找一个叶子使得它到根的路径上的权和最小。如果有多解,该叶子本身的权应尽量小。 输入中每两行表示一棵树,其中第一行为中序遍历,第二行为后序遍历。 样例输入: 3 2 1 4 5 7 6 3 1 2 5 6 7 4 7 8 11 3 5 16 12 18 8 3 11 7 16 18 12 5原创 2017-04-26 22:28:06 · 448 阅读 · 0 评论 -
快速排序及其优化
快速排序的实现方式很多,看了一篇博客之后觉得他的实现方式最简洁。算法思路主要为: 1、先重排,选取一个基准值(可以每次选左边的,也可以随机选一个),使左边的元素都小于这个基准值,右边的元素都大于这个基准值。 2、递归求解。 详细一点的说来第一步的方法就是: 以6,10,22,15,3,4,8,12这一组数A为例。 第一步:选取最左端的6作为基准值comp=6,m=0,然后依次与A[1],A原创 2017-07-03 16:43:48 · 353 阅读 · 0 评论 -
八皇后问题
在回溯法的运用中的经典案例,问题如下: 在棋盘上放置8个皇后,使得他们互相不能攻击到,此时每个皇后的攻击范围为同行同列和同对角线(主副对角线),要求找出所有解。 这是问题的一个解 我们使用递归枚举(也就是回溯法)来求解这个问题。 先分析下问题的规模:从0行开始到第7行每行都必须有一个皇后,所以固定了行之后,按列来算就是全排列问题,排列数是8!=40320个,枚举数是不会超过它的,所以问题原创 2017-07-15 21:55:43 · 379 阅读 · 0 评论 -
归并排序
&emsp&emsp归并排序的思想是分治法。先进行划分,然后对划分得到的部分分别排序进行递归继续划分,最后达到条件后退出递归,逐层合并。 &emsp&emsp一方面在进行划分时,划分的重点的计算为了防止数据的溢出,不要采用m=(x+y)/2而应当采用m=x+(y-x)/2的方式。 &emsp&emsp主要需要注意的地方在于合并时的条件,在进行合并时,只要两个部分中有一个部分为空即可进行复制到暂存原创 2017-07-03 11:09:13 · 213 阅读 · 0 评论 -
LIS最长上升子序列(打印路径)
问题描述:给定n个整数A1,A2,…An,按从左到右的顺序选出尽量多的整数,组成一个上升子序列。例如序列162375,可以选出1235也可以选出167,但是前者更长,且要求选出的上升子序列中相邻元素不相等。 下面是时间复杂度O(n2)的代码// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。//#include <string.h>#include <iost原创 2017-07-22 13:39:50 · 1482 阅读 · 0 评论 -
string类型转换int类型
string类型转换int类型本文地址: http://blog.youkuaiyun.com/caroline_wendyC语言转换形式:[plain] view plain copy print?... std::string str; int i = atoi(str.c_str()); .转载 2017-10-15 15:54:39 · 367 阅读 · 0 评论