基础知识
KLFTESPACE
这个作者很懒,什么都没留下…
展开
-
欧拉筛法
素数筛//O(n)void SetPrime(){ int i, j, num=1; memset(tmp, true, sizeof(tmp)); for(int i=2; i<=N; i++){ if(tmp[i]) prime[num++] = i; for(int j=1; j<=num; j++){ if(i*prime[j] &...原创 2019-09-02 15:53:42 · 113 阅读 · 0 评论 -
C语言中关于float、double、long double精度及数值范围理解
转自http://blog.sina.com.cn/s/blog_6ebd49350101gdgo.htmlIEEE754浮点数的表示方法。C语言里对float类型数据的表示范围为-3.4*10^38~+3.4*10^38。double为-1.7*10^-308~1.7*10^308,long double为-1.2*10^-4932~1.2*10^4932. 类型 ...转载 2018-07-21 23:25:56 · 86843 阅读 · 8 评论 -
getline和 cin
#include <iostream>#include <string>int main(){ std::string name; std::cout << "What is your name? ";// while( getline (std::cin, name))//遇到换行符当成空格 while((std::cin &g...原创 2018-07-21 11:10:37 · 217 阅读 · 0 评论 -
从头到尾彻底理解KMP
从头到尾彻底理解KMP 作者:July时间:最初写于2011年12月,2014年7月21日晚10点 全部删除重写成此文,随后的半个多月不断反复改进。后收录于新书《编程之法:面试和算法心得》第4.4节中。 1. 引言 本KMP原文最初写于2年多前的2011年12月,因当时初次接触KMP,思路混乱导致写也写得混乱。所以一直想找机会重新写下KMP,但苦于一...转载 2018-07-20 22:32:15 · 867 阅读 · 0 评论 -
图的存储结构(邻接矩阵与邻接表)及其C++实现
转自~君莫笑~图的存储结构(邻接矩阵与邻接表)及其C++实现一、图的定义图是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为: G=(V,E)其中:G表示一个图,V是图G中顶点的集合,E是图G中顶点之间边的集合。注:在线性表中,元素个数可以为零,称为空表;在树中,结点个数可以为零,称为空树;在图中,顶点个数不能为零,但可...转载 2018-07-24 22:08:27 · 1025 阅读 · 0 评论 -
DFA
1、问题概述 转载自 http://blog.csdn.net/yukuninfoaxiom/article/details/6057736随着计算机语言的结构越来越复杂,为了开发优秀的编译器,人们已经渐渐感到将词 法分析独立出来做研究的重要性。不过词法分析器的作用却不限于此。回想一下我们的老师刚刚开始向我们讲述程序设计的时候,总是会出一道题目:给出一个填入 了四则运算式子的字符...转载 2018-07-18 22:34:22 · 2555 阅读 · 0 评论 -
Trie树(字典树)
原作者链接 Trie树(字典树)一、引入字典是干啥的?查找字的。字典树自然也是起查找作用的。查找的是啥?单词。看以下几个题:1、给出n个单词和m个询问,每次询问一个单词,回答这个单词是否在单词表中出现过。答:简单!map,短小精悍。好。下一个2、给出n个单词和m个询问,每次询问一个前缀,回答询问是多少个单词的前缀。答:ma...转载 2018-07-18 21:34:15 · 155 阅读 · 0 评论 -
欧拉回路
转自buptLizer欧拉回路欧拉回路:图G,若存在一条路,经过G中每条边有且仅有一次,称这条路为欧拉路,如果存在一条回路经过G每条边有且仅有一次,称这条回路为欧拉回路。具有欧拉回路的图成为欧拉图。判断欧拉路是否存在的方法有向图:图连通,有一个顶点出度大入度1,有一个顶点入度大出度1,其余都是出度=入度。无向图:图连通,只有两个顶点是奇数度,其余都是偶数度的。判断欧拉回...转载 2018-07-18 11:49:51 · 198 阅读 · 0 评论 -
Prim算法(一)之 C语言详解
转自sktywang12345 Prim算法(一)之 C语言详解本章介绍普里姆算法。和以往一样,本文会先对普里姆算法的理论论知识进行介绍,然后给出C语言的实现。后续再分别给出C++和Java版本的实现。目录 1. 普里姆算法介绍 2. 普里姆算法图解 3. 普里姆算法的代码说明 4. 普里姆算法的源码转载请注明出处:http://www.cnblogs.com/skywan...转载 2018-07-17 21:56:57 · 1220 阅读 · 0 评论 -
快速幂 与矩阵快速幂
转自CXCXCXC /*快速幂*/int qpow(int a, int b) { int ans = 1, base = a; while (b) { if (b & 1) ans *= base; base *= base; b >>= 1; ...转载 2018-07-17 17:57:20 · 285 阅读 · 0 评论 -
size length(C++)
#include <iostream>#include <string.h>using namespace std;int main(){ string c; int a, b; while( cin >> c){ a = c.length(); b = c.size(); cout <<...原创 2018-07-22 09:58:02 · 720 阅读 · 0 评论 -
scanf 与 printf 的返回值
#include<stdio.h>int main(){ int num; int a=scanf("%i",&num); int b=printf("%d\n",num); printf("a=%d:b=%d",a,b);} scanf返回值为读入了多少个变量;printf返回值为输出了多少个字符。...原创 2018-07-22 16:52:57 · 231 阅读 · 0 评论 -
安装quartusII-13.1遇到的问题
这个 我将安装包存储的路径全改成英文的了,然后安装路径也全英,然后,OK了原创 2019-05-16 09:29:32 · 1713 阅读 · 3 评论 -
String[] args
static关键字,告知编译器main函数是一个静态函数。也就是说main函数中的代码是存储在静态存储区的,即当定义了类以后这段代码就已经存在了。如果main()方法没有使用static修饰符,那么编译不会出错,但是如果你试图执行该程序将会报错,提示main()方法不存在。因为包含main()的类并没有实例化(即没有这个类的对象),所以其main()方法也不会存。而使用static修饰符则表...原创 2019-03-18 23:38:11 · 322 阅读 · 0 评论 -
分别用命令行参数,Scanner,JOptionPane和IO流实现对圆的面积和周长的求解
//分别用命令行参数,Scanner,JOptionPane和IO流实现对圆的面积和周长的求解BufferedReader字符流System.in字节流InputStreamReader字节流转字符流BufferedReader的read()是把第一个字符的ASCLL码赋值给变量rreadLine()每次读回来的都是一行字符串package first...原创 2019-03-25 18:35:12 · 384 阅读 · 0 评论 -
数组模拟邻接表 vector模拟邻接表实现
转自https://www.cnblogs.com/sssy/p/6682747.html#include<iostream>#include<cstdio>using namespace std;const int E=5;//E为最大边数const int N=3;//n为最大定点数struct Edge { int u,v,w,next;/...转载 2019-03-05 17:32:04 · 419 阅读 · 0 评论 -
提取大数前四位
转自若流芳千古 当一个数非常大时,如何求出其前几位呢?如果是给定一个特定的数,当然可以逐步取出每一位即可。如a得个位,a/10得百位,a/10/10得千位。但是,当求x^y的前几位时怎么办呢?若x,y都非常大,则显然很难解决:也许可以用大数乘法,暴力求解,结果自然是既占内存,又耗时间。还有,此题斐波拉契数列的前几位,显然求出每个斐波拉契数是不现实的。因此,可以采用取对数的方...转载 2019-02-25 10:20:53 · 774 阅读 · 0 评论 -
Palindrom Numbers ZOJ 1078
//本来想练练itoa,,结果oj不支持,,,然后就自己写了个itoa1的函数,然后引用那儿遇到了问题,需要写成char (&a)[15] 必须&与数组名a用括号括起来,应该只能写成这种样子。 然后,数组变量不引用也可以通过形参修改实参值。通过形参 可在子函数中改变形参所指向的数组中的内容,而实参对应的数组中的内容会随之改变。因为这是通过地址对地址中的内容进行更改。#inc...原创 2019-02-21 17:46:18 · 229 阅读 · 0 评论 -
输出无向图的邻接表
https://blog.csdn.net/dwenxue/article/details/72831234 /*无向图的邻接表表示法*/#include <iostream>#include<stdio.h>#include <string.h>#define vnum 10typedef struct arcnode{ int...转载 2018-12-08 11:22:02 · 1472 阅读 · 0 评论 -
总结一些比较函数(含有优先队列里结构体里的重载)
最近见的比较函数挺多的,然后就想汇总一下,记录下来,But,忘了好几个,先写一点,剩下的有机会见了补上//适用于qsortint cmp(const void *a ,const void *b){ return *(int *)a - *(int *)b ; //从小到大排序 }//sortint cmp(const int a ,const int b){...原创 2018-07-30 21:51:53 · 773 阅读 · 0 评论 -
中国剩余定理(孙子定理)详解
转自despair_ghost中国剩余定理(孙子定理)详解问题:今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二。问物几何?简单点说就是,存在一个数x,除以3余2,除以5余三,除以7余二,然后求这个数。上面给出了解法。再明白这个解法的原理之前,需要先知道一下两个定理。定理1:几个数相加,如果存在一个加数,不能被整数a整除,那么它们的和,就不能被整数a整除。定理2:两数不...转载 2018-07-22 22:09:57 · 1378 阅读 · 0 评论 -
公有继承中 构造函数和析构函数的调用(包含内嵌子对象)
先祖先后客人再自己。#include<iostream>#include<cstdio>using namespace std;class B0{public: B0(){cout << "construct B0" << endl;}};class Date{private:int year, mont...原创 2018-07-03 13:31:48 · 714 阅读 · 0 评论 -
虚基的例子
//若不是虚基类,则每次都会调用Basic()#include <iostream>using namespace std;class Basic{public: Basic(){ cout<<"Basic"<<endl; }};class child1:virtual public Basic{public: ...原创 2018-07-03 13:16:20 · 233 阅读 · 0 评论 -
和Linux学习有关的链接
在GitHub上发现的,,,发在博客上看看dunwu原创 2018-05-24 15:33:03 · 247 阅读 · 0 评论 -
深度优先搜索和广度优先搜索的比较与分析
一、深度优先搜索和广度优先搜索的深入讨论 (一)深度优先搜索的特点是:(1)无论问题的内容和性质以及求解要求如何不同,它们的程序结构都是相同的,即都是深度优先算法(一)和深度优先算法(二)中描述的算法结构,不相同的仅仅是存储结点数据结构和产生规则以及输出要求。(2)深度优先搜索法有递归以及非递归两种设计方法。一般的,当搜索深度较小、问题递归方式比较明显时,用递归方法设计好,它可以使得程序结构更简捷...转载 2018-04-29 20:13:35 · 6577 阅读 · 0 评论 -
递归,递推,迭代的含义
递归,递推,迭代的含义点击打开链接原文链接递归:程序调用自己的编程技巧叫做递归。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递推:递推算法是一种用若干步可重复的简运算(规律)...转载 2018-04-29 19:49:40 · 325 阅读 · 0 评论 -
strok函数的使用
转自https://blog.csdn.net/comeonwpk/article/details/54142280 (找不到原创博文)在编程过程中,有时需要对字符串进行分割.而有效使用这些字符串分隔函数将会给我们带来很多的便利.下面我将在MSDN中学到的strtok函数做如下翻译. strtok :在一个字符串查找下一个符号char *strtok( char *strToken, cons...转载 2018-05-13 21:21:52 · 1969 阅读 · 0 评论 -
排序与检索
1.//归并排序void merge_sort(int* A, int x, int y, int* T){ if(y-x > 1){ int m = x+(y-x)/2; int p = x, q = m, i = x; //递归 merge_sort(A, x, m, T); merge_sort(A, m, y...原创 2018-05-18 23:01:38 · 260 阅读 · 0 评论 -
指针数组和数组指针
一、指针数组和数组指针的内存布局点击打开链接初学者总是分不出指针数组与数组指针的区别。其实很好理解:指针数组:首先它是一个数组,数组的元素都是指针,数组占多少个字节由数组本身决定。它是“储存指针的数组”的简称。 数组指针:首先它是一个指针,它指向一个数组。在32 位系统下永远是占4 个字节,至于它指向的数组占多少字节,不知道。它是“指向数组的指针”的简称。 下面到底哪个是数组指针,哪个是指针数组呢...转载 2018-05-05 19:55:54 · 136 阅读 · 0 评论 -
枚举排列
转自刘汝佳《算法竞赛入门经典(第二版)》一,递归枚举二, STL next_permutation1.生成1~n的排列void print_permutation(int n, int* A, int cur){ if(cur == n){ //递归边界 for(int i = 1; i <=n; i++) printf("%d ", A[i]); printf...转载 2018-05-17 17:05:58 · 418 阅读 · 0 评论 -
char,short ,int ,long,long long,unsigned long long数据范围
速查表:char -128 ~ +127 (1 Byte)short -32767 ~ + 32768 (2 Bytes)unsigned short 0 ~ 65535 (2 Bytes)int -2147483648 ~ +2147483647 (4 Bytes)//比12的阶乘大10倍左右,但比13的阶乘小unsigned int 0 ~ 4294967295 (4 Bytes)...转载 2018-04-25 22:28:46 · 323 阅读 · 0 评论 -
sort函数详解
转自点击打开链接https://www.cnblogs.com/AlvinZH/p/6784862.htmlAlvinZHsort函数详解(史上最完整QAQ)阅读目录1.sort2.sort简介3.sort扩展1.sort使用:#include <algorithm> using namespace std;作用:排序时间复杂度:n*lg(n)实现原理:sort并不是简单的快速...转载 2018-05-02 07:38:34 · 322 阅读 · 0 评论 -
(类)前向引用声明
取自郑莉C++语言程序设计前向引用声明, 是在引用为定义的类前,将该类的名字告诉编译器,使编译器知道那是一个类名,如:. #include <iostream> using namespace std; class BBank;class GBank;class CBank{private: double balance;public: CBank(double i):...原创 2018-06-21 16:27:37 · 963 阅读 · 0 评论 -
运算符优先级及结合性(取自C++语言程序设计第四版)
原创 2018-06-18 13:35:45 · 201 阅读 · 0 评论 -
基类对象与派生类对象的关系
点击打开原文链接基类对象与派生类对象的使用关系1. 派生类对象作为基类对象处理由于派生类具有所有基类的成员,所以把派生类的对象赋给基类对象是合理的,不过要求这种继承方式必须是public方式。但是,反过来赋值会使基类中一具有派生类的成员(因为派生类的成员通常是比基类的成员多),所以这是不允许的。2. 基类指针指向派生类对象因为派生类对象也是基类对象,所以指向派生类对象的指针可以转换为指向基类对象的...转载 2018-07-03 10:13:18 · 5051 阅读 · 3 评论 -
常量对象与常量成员函数
点击打开原文链接常量对象与常量成员函数常量对象与常量成员函数来防止修改对象,实现最低权限原则。可以用关键字const来指定对象是不可修改的,任何修改该对象的企图,都会导致编译错误。例如:const Time noon(12,0,0); 声明一个Time 类的常量对象noon,并将它初始化为中午12点。C++不允许在常量对象上调用成员函数,除非成员函数本身也被声明为常量。甚至对不会修改对象的成...转载 2018-07-03 10:09:15 · 329 阅读 · 0 评论 -
类的成员访问方式
一般成员只有通过对象才能访问,类外不可用对象访问私有数据成员。静态成员也可通过类名访问。原创 2018-07-02 22:44:13 · 2091 阅读 · 0 评论 -
虚析构函数
#include <iostream>using namespace std;class A{ public: virtual ~A( ){ cout<<"A::~A( ) called "<<endl; } };class B:public A{ char *buf; public: B(int i) { buf=n...原创 2018-07-02 22:25:25 · 185 阅读 · 0 评论 -
继承二义性 动态关联
1.关于多重继承二义性的描述中,( C )是错误的。 A.一个派生类的两个基类中都有某个同名成员,在派生类中对这个成员的访问可能出现二义性 B.解决二义性最常用的方法是对成员名的限定 C.基类和派生类中出现同名函数,也存在二义性D.一个派生类是从两个基类派生而来的,而这两个基类又有一个共同的基类,对该基类成员进行访问时,也可能出现二义性2.下列关于动态关联的描述中,错误的是(...原创 2018-07-02 22:18:03 · 395 阅读 · 0 评论 -
类型A和类型A&,return this和return *this
点击打开原文链接1.类型为 A ,返回值为 *this。只是返回的对象的一个拷贝。不可修改原对象的值。2.类型为 A&,返回值为 *this。只是返回的对象的一个引用。可以修改原来对象的值。3.类型为 A*,返回值为 this。只是返回的是指向对象的指针,可以修改原来对象的值。...转载 2018-06-26 17:35:27 · 371 阅读 · 0 评论