基础
文章平均质量分 71
01的世界
有时,失去了才懂得珍惜
展开
-
基础模板之求一个数的质因数
一个数一定会有质因数(除了1),一个数可以分解成多个质因数的乘积,例如12=2*2*3,。求n的质因数的方法:法一。因为质因数顾名思义,即是质数也是因数,那么我们可以从2-sqrt(n)+1,求出其中的质数,然后以此判断能否被n整除。也可以从2-(sqrt(n)+1,循环判断i能否被n整除,在判断是否是质数。第一种方法比第二种快。最简单的方法是下面这种,求x的质因数,保存在数组原创 2015-09-06 13:13:07 · 2920 阅读 · 0 评论 -
sstream
#include #include #include using namespace std;int main(){ int a, b; string Str1, Str2; string Input = "abc 123 bcd 456 sss 999"; //ostringstream 对象用来进行格式化的输出,可以方便的将各种类型转换为st转载 2015-05-11 17:48:34 · 462 阅读 · 0 评论 -
主要学习类型之间的转换
#include #include #include #include#include using namespace std;int getCommonStrLength(char * pFirstStr, char * pSecondStr){ string p1(pFirstStr);string p2(pSecondStr); int i,j,num=0,原创 2015-05-17 20:19:09 · 308 阅读 · 0 评论 -
例题7-1 除法UVa 725
题目:点击打开链接大意:给你一个数n(2 分析:暴力枚举b,然后*n得到a,判断,a,b中是否有重复数字即可代码:#include #include #include using namespace std;bool judge(int a,int b){ bool vis[12]; char str[12]; sprintf(str,"%05原创 2015-08-22 15:00:24 · 619 阅读 · 0 评论 -
sprintf函数的用法
sprintf函数的用法1、该函数包含在stdio.h的头文件中。#include 2、sprintf与printf函数的区别sprintf和平时我们常用的printf函数的功能很相似。sprintf函数打印到字符串中,而printf函数打印输出到屏幕上。sprintf函数在我们完成其他数据类型转换成字符串类型的操作中应用广泛。3、sprintf函数转载 2015-11-01 22:41:31 · 688 阅读 · 0 评论 -
C++语言基础 (正在扩充中)
引用:引用可以概括为 ”引用即别名 “,就像同一个人给他起了另一个名字。引用本身不是一个对象。int i=2;int &ii=i;ii=3;//改变ii就是改变i,指针:指针是一个对象,有他自己的内存空间,指向某值的地址,或者是某值地址的下一个地址。#includeusing namespace std;int main(){ int i=2; int原创 2015-08-16 16:26:31 · 262 阅读 · 0 评论 -
图论中的优先级搜索——DFS,BFS,Prim,Dijkstra
图论中的优先级搜索——DFS,BFS,Prim,Dijkstra 在图算法中经常要执行遍历每个顶点和每条边的操作,即图搜索。许多图算法都以图搜索为基础,如2-着色问题、连通性计算基于深度优先搜寻(depth-first search, DFS),而无权最短路径则基于广度优先搜索(breadth-first search, BFS)。基于搜索的算法还包括计算最小生成树的Prim算法转载 2015-07-12 22:22:05 · 3625 阅读 · 0 评论 -
最长上升子序列 nlogn时间复杂度 poj 2533
最长上升子序列模板题:#includeusing namespace std;#define maxn 1002int a[maxn],d[maxn];int main(){ int n; while(scanf("%d",&n)!=EOF){ for(int i=0;i<n;i++) scanf("%d",&a[i]);原创 2015-12-10 17:27:30 · 524 阅读 · 0 评论 -
C++中数字与字符串之间的转换
1、字符串数字之间的转换(1)string --> char * string str("OK"); char * p = str.c_str();(2)char * -->string char *p = "OK"; string str(p);(3)char * -->CString char *p ="OK"; CSt转载 2016-01-17 20:55:06 · 532 阅读 · 0 评论 -
hdu 2199 高精度二分模板
#include #include #include #include #include #include#include#include#include#define INF 10e7using namespace std;const int maxn=505;double deal(double x){ return 8*pow(x,4)+7*pow(x,3)原创 2016-01-21 16:02:33 · 309 阅读 · 0 评论 -
STL 之 stack&queue&priority_queue 栈,队列与优先队列
栈,队列与优先队列都属于容器适配器即包转了现有的STL容器类的模板类,提供了一个不同的,通常更有限制性的功能,以下部分是对三个特殊的数据结构的用法总结一。stack 模板类的定义在头文件中。所谓栈,就是符合后进先出的数据结构。stack 模板类需要两个模板参数,一个是元素类型,一个容器类型,但只有元素类型是必要的,在不指定容器类型时,默认的容器类型为deque。定义stac原创 2015-09-14 12:49:10 · 553 阅读 · 0 评论 -
STL map的用法
map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识到有转载 2015-11-12 23:58:12 · 308 阅读 · 0 评论 -
C++标准库中的list的实现原理
在C++中采用了大量的标志模板库(STL)实现程序的设计,这种设计方式使得不同类型的对象都能通用,而不再是C语言中的通常对于不同的类型需要重新设计或者或者比较采用间接的指针操作。C++中的这种方式简化了写代码的复杂度,但是增加了编译器的复杂度和难度。 在数据结构中链表是比较基本的类型,在C++中链表是基于模板的类,因此在实际的使用过程中需要涉及到实际的类型。点击(此处)折叠或打转载 2015-11-10 17:57:36 · 6384 阅读 · 0 评论 -
STL之 set的用法
Map,Set属于标准关联容器,使用了非常高效的平衡检索二叉树:红黑树,他的插入删除效率比其他序列容器高是因为不需要做内存拷贝和内存移动,而直接替换指向节点的指针即可,所以两者之间的一些用法是类似的。set集合容器:实现了红黑树的平衡二叉检索树的数据结构,插入元素时,它会自动调整二叉树的排列,把元素放到适当的位置,以保证每个子树根节点键值大于左子树所有节点的键值,小于右子树所有节点的键值;另外原创 2015-09-04 17:14:16 · 532 阅读 · 0 评论 -
子集生成
有些题目有时会用到子集生成,比如给你一些方案,选择其中几种使得方案和最优,其中一种思路就是生成所有方案的子集,枚举确定每种子集方案的情况,找到最优的方案集合。所以现在来按照刘汝佳书上的方法总结一下子集生成的几种方法:一。增量构造法每次迭出一个元素放到集合中:#include#include#include#include#includevoid print_subset(in原创 2015-09-15 10:49:51 · 289 阅读 · 0 评论 -
对二叉树的初步学习之递归的应用
二叉树是递归定义的:二叉树要么为空,要么由根节点(root),左子树(left subtree),右子树(right subtree)组成,而左子树和右子树分别是一颗二叉树一 . 二叉树的存储结构1.顺序存储结构:即用数组存储,2.链式存储结构:即用链表存储:struct Node{ int val; Node* left; Node* righ原创 2015-09-05 18:15:56 · 384 阅读 · 0 评论 -
STL之list的用法
list封装了链表,所以list,每次访问可以很快的支持插入和删除操作,但是不适合随机访问,如果查找某个元素也是从头遍历,速度较慢assign() 给list赋值 back() 返回最后一个元素 begin() 返回指向第一个元素的迭代器 clear() 删除所有元素 empty() 如果list是空的则返回true end() 返回末尾的迭代器 erase() 删原创 2015-09-06 16:32:28 · 327 阅读 · 0 评论 -
c++ list, vector, map, set 区别与用法比较
List封装了链表,Vector封装了数组, list和vector得最主要的区别在于vector使用连续内存存储的,他支持[]运算符,而list是以链表形式实现的,不支持[]。Vector对于随机访问的速度很快,但是对于插入尤其是在头部插入元素速度很慢,在尾部插入速度很快。List对于随机访问速度慢得多,因为可能要遍历整个链表才能做到,但是对于插入就快的多了,不需要拷贝和移动数据,只需要转载 2015-09-04 12:27:25 · 577 阅读 · 0 评论 -
STL 之 deque的用法
deque双端队列,及支持vector的随机访问[],也支持list的前后两端插入删除,功能很强大,现总结一下其主要用法deque与vector很类似,vector的函数操作好像deque都支持,而且也支持pop_front和push_front,但是占用内存较多支持dequea[100],操作主要操作函数:(1) 构造函数deque():创建一个空deque原创 2015-09-15 12:45:18 · 364 阅读 · 0 评论 -
全排列系列
//给定元素个数n,排列序号num//返回对应的排列p#include #include #include using namespace std;int p[]={3,2,1,4};void num2perm(int n, int *p,int num){ int i,j; //求逆序数数组 for(i=n-1;i>=0;i--)p[i]=num%(n-i),num/=n-i;原创 2015-07-18 16:38:45 · 322 阅读 · 0 评论 -
C++中map的排序问题
map是用来存放键值对的数据结构,可以很方便快速的根据key查到相应的value。假如存储学生和其成绩(假定不存在重名,当然可以对重名加以区分),我们用map来进行存储就是个不错的选择。 我们这样定义,map,其中学生姓名用string类型,作为Key;该学生的成绩用int类型,作为value。这样一来,我们可以根据学生姓名快速的查找到他的成绩。 但是,我们除了希望能够查询某个学转载 2015-11-10 19:59:01 · 631 阅读 · 0 评论 -
scanf()函数的用法
虽然有人说在大型程序设计中永远不要使用scanf(),但是对于习惯用C的人和参加ACM/ICPC的人,scanf()还是用的比较多的,而且用好了用起来也很方便 下面整理一点儿平时常需要用到而可能有些人一直理不清的一些知识 一般常识:scanf()函数的一般格式为:scanf("格式字符串",输入项首地址表)scanf的格式控制的一般形式为:%[*][宽度][F|N]转载 2015-10-25 19:32:05 · 488 阅读 · 0 评论 -
hdu 2050
转载于:http://www.cnblogs.com/chaosheng/archive/2012/01/26/2329583.html(1) n条直线最多分平面问题 题目大致如:n条直线,最多可以把平面分为多少个区域。 析:可能你以前就见过这题目,这充其量是一道初中的思考题。但一个类型的题目还是从简单的入手,才容易发现规律。当有n-1条直线时,平面最多被分成了转载 2016-01-22 18:23:32 · 345 阅读 · 0 评论