韩江雪de 小屋

追赶时间的步伐,让每一天都在键盘上起舞!

随机数函数rand()

1,使用前提 rand()和srand()要一起使用,其中srand()用来初始化随机数种子,rand()用来产生随机数。 因为默认情况下随机数种子为1,而相同的随机数种子产生的随机数是一样的,失去了随机性的意义,所以为使每次得到的随机数不一样,用函数srand()初始化随机数种子。srand...

2019-04-10 15:31:16

阅读数 22

评论数 0

c++中冒号(:)和双冒号(::)的用法

1.冒号(:)用法 (1)表示机构内位域的定义(即该变量占几个bit空间) typedef struct _XXX{ unsigned char a:4; unsigned char c; } ; XXX (2)构造函数后面的冒号起分割作用,是类给成员变量赋值的方法,初始化列表,更...

2019-04-09 14:52:07

阅读数 2

评论数 0

#ifndef, #define, #endif 作用

#ifndef   它是if not define 的简写,是宏定义的一种,实际上确切的说,这应该是预处理功能三种(宏定义、文件包含、条件编译)中的一种----条件编译。   在c语言中,对同一个变量或者函数进行多次声明是不会报错的。所以如果h文件里只是进行了声明工作,即使不使用# ifnde...

2019-04-08 18:28:41

阅读数 3

评论数 0

算法之数学篇——素数(原理以及实现)、打印素数表、分解质因子

1,原理 由于2~n中存在的约数,不妨设为k,即n%k==0,那么k*(n/k) == n可知,n/k也是n的一个约数,且k与n/k一定满足其中一个小于sqrt(n)、另一个大于sqrt(n); 这启发我们只需要判断n能否被2,3,。。sqrt(n)【向下取整】整除,即可判定n是否为素数。 ...

2019-03-23 22:08:41

阅读数 6

评论数 0

算法之数学篇——分数计算(原理以及实现)

1,分数的表示: struct Fraction{ long long up, down; }; 2,分数的化简 /* * 1, 使down为非负数,如果分数为负,那么令分数up为负即可; * 2,如果该分数恰好为0,那么规定其分子为0,分母为1 * 3,分子和分母没有除...

2019-03-23 20:44:01

阅读数 45

评论数 0

算法之数学篇——最小公倍数(原理以及实现)

1,原理 正整数a、b的最大公约数即:集合a和集合b的交集,而最小公倍数为集合a和集合b的并集。要得到并集,由于ab会使得共因子部分多计算一次,因此需要除掉一次共因子,于是就得到了a和b的最小公倍数为ab/d。 由于ab在实际计算中有可能溢出,因此更恰当的写法是a/db。 2,算法实现 ...

2019-03-23 19:42:34

阅读数 18

评论数 0

算法之数学篇——最大公约数(原理及实现)

1,数学原理 欧几里得算法 2,实现 1)方法一 int gcd(int a, int b){ if(b == 0) return a;//递归边界:0和任何一个整数a的最大公约数都是a else return gcd(b, a % b);//递归式 } 2)方法二...

2019-03-23 19:33:20

阅读数 16

评论数 0

char[],char *,string之间转换

char[],char *,string之间转换 char []与char *之间转换 char []转char *:直接进行赋值即可 // char[] 转char * char str[] = "lala"; char *str1 = str; cout &lt...

2019-03-23 10:32:59

阅读数 51

评论数 0

宏替换

简单来说:宏定义又称为宏代换、宏替换,简称“宏”。是C提供的三种预处理功能的其中一种。 复杂的请看下面,讲的很全。下面的带参宏定义,多行宏定义,在Linux内核源码中很多。另外sizeof也是一个宏定义。 宏定义 宏定义是C提供的三种预处理功能的其中一种,这三种预处理包括:宏定义、文件包含、条件编...

2019-03-22 22:54:57

阅读数 23

评论数 0

大整数运算——存储、比较、加减乘除,附带代码实现

1 大整数的存储 大整数:高精度整数,其含义是基本数据类型无法存储其精度的整数。 整数的高位存储在数组的高位,整数的低位存储在数组的低位,不反过来的原因是,在运算的时候都是从整数的低位到高位进行枚举,顺位存储和这种思维相合。 例如:235813 存储在数组中,即有d[0] = 3,d[1...

2019-03-22 22:04:07

阅读数 29

评论数 0

SCL(自己的标准代码库)

1,快速幂运算 1.1方法1 typedef long long LL; LL binaryPow(LL a, LL b, LL m){ if(b == 0) return 1; if(b % 2 == 1) //可以替换为 if(b&1) r...

2019-03-22 15:10:40

阅读数 39

评论数 0

编程之旅——编程常出现的错误(警醒⚠️)

1,只定义了需要输入的整数n,却没有输入它(scanf("%d", &n)); 2,使用一个数组时,它的原值已经在数值处理中被更改了,不是原值(此时需要设置一个临时变量temp,把数组值付给它,对它进行操作); 3,输出固定字符时,打错了,例如题目需要输出N...

2019-03-21 22:51:56

阅读数 17

评论数 0

对vector等STL标准容器进行排序操作

西方有句谚语:不要重复发明轮子! STL几乎封装了所有的数据结构中的算法,从链表到队列,从向量到堆栈,对hash到二叉树,从搜索到排序,从增加到删除......可以说,如果你理解了STL,你会发现你已不用拘泥于算法本身,从而站在巨人的肩膀上去考虑更高级的应用。 排序是最广泛的算法之一,本文详细...

2019-03-20 22:17:21

阅读数 42

评论数 0

使用scanf读入二维字符串数组注意事项

使用scanf("%c",&a[i][j])读入二维字符串数组时, 如果使用两个for循环, 要记得在内层循环结束后,使用getchar()读取换行符, 即: for i ~ n for j ~ n scanf("%c",...

2019-03-19 18:27:01

阅读数 56

评论数 0

高效技巧与算法——随机选择选择算法原理以及应用

原理类似于随机快速排序。 例题:从一个无序数组中求出第K大的数(数组中数各不相同) 思路1:先排序,然后直接去除第K个元素,但是需要O(nlogn)的时间复杂度 思路二:随机选择算法 先执行一次randPartition函数后,主元左侧的元素个数就是确定的,且它们都小于主元。 假设主元是...

2019-03-12 10:13:48

阅读数 8

评论数 0

高效技巧与算法——打表

打表(用空间换时间)————一般是指将所有需要用到的结果先计算出来,然后后面需要用到时就可以直接查表获得。 1)在程序中一次性计算出所有需要用到的结果,之后的查询直接取这些结果。(大量查询) 2)在程序B中分一次或多次计算出所有需要用到的结果,手工把结果写在程序A的数组中,然后在程序A中就...

2019-03-12 10:11:10

阅读数 27

评论数 0

快速幂运算——原理以其应用(递归、迭代)

快速幂算法: 1,背景 给定三个整数a、b、m(a < 10^9, b < 10^6, 1< m < 10^9),求a^b%m typedef long long LL; LL pow(LL a, LL...

2019-03-10 22:48:26

阅读数 27

评论数 0

贪心——思想及编码实践

1,简单贪心 作用:求解一类最优化问题的方法 特点:总考虑在当前状态下局部最优(或较优)的策略 严谨使用贪心算法求解最优化问题需要对采取的策略进行证明(反证法以——【假设策略不能导致最优解,最后通过一些列推导来得到矛盾,以此证明策略是最优的】及数学归纳法【最后保证全局最优】) ⚠️...

2019-03-08 16:28:51

阅读数 5

评论数 0

C++之string定义、用法详解

string用法 1,定义 string str; 初始化 ,可以直接给string类型的变量赋值; string str = “abcd”; ⚠️:使用时,需要加上头文件 #include<string> using namespace ...

2019-03-06 08:31:40

阅读数 12

评论数 0

递归思想及应用——求解阶乘、斐波那契数列、全排列、n皇后问题

递归 1,分治 概念:分治法将原问题划分成若干规模较小而结构与原问题相同或相似的子问题,然后分别解决这些子问题,最后合并子问题的解,即可得到为原问题的解。 由上可知,分治法可以分为三个步骤: 1)分解:将原问题分解为若干和原问题拥有相同或相似结构的子问题 2)解决:递归求解所有子问题...

2019-03-03 13:54:32

阅读数 65

评论数 0

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