![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
编程小总结
文章平均质量分 50
morgan_xww
这个作者很懒,什么都没留下…
展开
-
迭代法求平方根
迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程,跟迭代法相对应的是直接法(或者称为一次解法),即一次性解决问题。迭代法又分为精确迭代和近似迭代。“二分法”和“牛顿迭代法”属于近似迭代法。 迭代算法是用计算机解决问题的一种基本方法。它利用计算机运算速度快、适合做重复性操作的特点,让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值原创 2010-07-17 22:42:00 · 3198 阅读 · 0 评论 -
c语言头文件time.h
#include #include void main(){ time_t sec; //typedef long time_t struct tm * curTime; sec = time(NULL); //获取时间,从1970.1.1到现在的秒数,也可以写成 time(&sec); curTime = localtime(&sec); //原创 2011-11-26 12:39:37 · 18836 阅读 · 3 评论 -
快速排序
/** 每次排序是以第一个元素a[low]为key,也可以改为key取a[low],a[high],a[mid]三者的中间值。 实验证明:key取三者的中间值,确实可以节约一些时间。相应的代码应该改为: i = low; j = high; mid = (low + high) / 2; if ((a[mid]>a[low] && a[mid]a[h原创 2010-07-17 22:49:00 · 845 阅读 · 0 评论 -
最优二叉查找树(optimal BST)
/** 最优二叉查找树:一棵有n个结点的二叉查找树,已知每个结点的查找概率Pi(且∑Pi=1),要使查找操作的平均比较次数最小。(这里讨论的是成功查找,不讨论不成功的查找)动态规划: c[i][j]表示由结点i~j组成的BST成功查找的最小平均查找次数。 r[i][j]表示由结点i~j构成最优二叉查找树时的树根结点。转换公式: c[i][j] = Min[i<=原创 2011-11-26 12:36:08 · 5000 阅读 · 0 评论 -
C语言 qsort() 函数
/**函数原型:#include void qsort( void *buf, size_t num, size_t size, int (*compare)(const void *, const void *) );**/// For example:int compare( const void* a, const void* b ){ int* arg1 = (i原创 2010-07-17 22:55:00 · 828 阅读 · 0 评论 -
堆排序
/**堆:是一棵完全二叉树,并且满足父母优势原则(每个结点的键值都要大于等于它子女的键值,对于叶子结点该条件默认满足)。数据结构:通常用数组来表示,a[0...n-1]表示表示有n个结点的一棵完全二叉树,点a[i]的左右孩子分别为a[2*i+1]和a[2*i+2]。构造堆的方式有两种:1.自底向上:从最后一个父母结点(a[n/2-1])开始,到树根(a[0])为止,检查这些结点是否原创 2010-07-17 23:24:00 · 700 阅读 · 0 评论 -
欧拉回路
欧拉图(欧拉通路,欧拉回路)给你一副无向图。 寻找一条包含所有边的路径,其中每一条边只经过一次。这被叫做欧拉通路。若这条路径的起点与终点为同一点,则为欧拉回路。判定定理:定理1:一个图有欧拉回路当且仅当它是连通的(即不包括0度的结点)且每个结点都有偶数度。定理2:一个图有欧拉通路当且仅当它是连通的且除两个结点为基数度,其他结点都有偶数度。 其中的两个基数原创 2011-11-26 12:43:45 · 2235 阅读 · 0 评论 -
产生随机数 rand() 和 srand() 函数的使用
摘抄自:http://tieba.baidu.com/f?kz=356105289 首先我们要对rand&srand有个总体的看法:srand初始化随机种子,rand产生随机数,下面将详细说明。rand(产生随机数)表头文件: #include 定义函数 :int rand(void) 函数说明 :因为rand的内部实现是用线性同余法做的,他不是真的随机数,只不过是因为其周原创 2010-08-04 09:57:00 · 1728 阅读 · 0 评论 -
树状数组
/* 树状数组是一个查询和修改复杂度都为log(n)级别的区间统计的数据结构,在思想上类似于线段树。注意:这里的修改指的是将A[i]加上某个值v,而不能将A[i]的值设定为v.相比线段树,树状数组需要的空间较少,编程复杂度也较低,但适用范围比线段树小。有一个包含n个元素的数组A[],函数Change(i, j)要修改一个元素A[i]=j;函数Query(i)询问前缀Si=A1+A2原创 2011-03-13 13:24:00 · 971 阅读 · 0 评论 -
归并排序(合并排序)
/**题目:要求冒泡排序的交换次数,也就是求逆序数的个数。在一个排列中如果有两个数的排序和所规定的排序规则相反,则这两个数是一个逆序。一个排列中的逆序的总数就是这个排列的逆序数。用归并排序,求逆序数的个数。##Poj 2299 这道题充分印证了,即使merge本身可能用的不多,但分冶的思想却是无所不在**/#include int left[250003], right[25原创 2011-11-26 12:22:00 · 2884 阅读 · 0 评论 -
凸包问题(Graham扫描法)
/**凸包问题 —— Graham扫描法: 找出点集p[]中最下面的点(有多个时取最左边的),以该点为极点,求出其他所有点的极角,显然,极角范围为 [0, 180)度,对这些点按极角的升序排序,也就是按极角的余切值降序排列,先把极点和排序后的第一个点和第二个点入栈,再一次循环(i = 3 -> n-1),若栈顶的两个点和当前的点p[i]这三点连线的方向向顺时针方向偏转,则栈顶元素出原创 2011-11-26 12:37:54 · 4484 阅读 · 1 评论 -
约瑟夫环问题
那么它在n个人中的序号 x1 = (x0+m-1)%n + 1,原创 2010-07-22 16:10:00 · 572 阅读 · 0 评论 -
freopen()函数的使用及如何返回控制台。
freopen("input.txt", "r", stdin);freopen("CON", "r", stdin);原创 2010-08-04 19:26:00 · 6900 阅读 · 5 评论 -
一些很容易被忽略但又很有用的 C 语言函数
C语言库函数原创 2010-08-11 13:25:00 · 981 阅读 · 0 评论 -
关于《中国剩余定理》
中国古代求解一次同余式组的方法。是数论中一个重要定理。又称中国剩余定理原创 2010-08-09 11:23:00 · 834 阅读 · 0 评论 -
康托展开
康托展开和其逆运算原创 2011-03-24 21:51:00 · 6563 阅读 · 0 评论 -
求最大连续子段和 的 dp算法
求最大连续子段和 的 dp算法原创 2010-08-03 16:42:00 · 2515 阅读 · 0 评论 -
SPFA算法
单源最短路径算法 SPFA原创 2011-03-26 11:01:00 · 12726 阅读 · 3 评论 -
背包问题
题目:有N件物品和一个容量为W的背包。第i件物品的重量是 w[i],价值是 v[i]。求将哪些物品装入背包可使这些物品的重量总和不超过背包容量,且价值总和最大。最简单的一类“01背包”:每种物品仅有一件,可以选择放或不放。用子问题定义状态:f[i][j] 表示前 i 件物品放入一个容量为j的背包可以获得的最大价值。状态转移方程:if (w[i] > j) f[i][j] = f[原创 2011-03-05 13:18:00 · 745 阅读 · 0 评论 -
C语言不确定参数
C语言中有一种长度不确定的参数,形如:"...",它主要用在参数个数不确定的函数中,我们最容易想到的例子是printf函数。C语言用va_start等宏来处理这些可变参数。其实原理挺简单,就是根据参数入栈的特点从最靠近第一个可变参数的固定参数开始,依次获取每个可变参数的地址。标准C语言中头文件专门用来对付可变参数列表,它包含了一组宏和一个va_list的typedef声明。不同平台有不同的原创 2012-10-07 08:56:33 · 8178 阅读 · 2 评论