
algorithm
文章平均质量分 82
baiyuang
acmer
展开
-
以空间换时间经典算法
以前看过一篇文章“优化C代码常用的几招”,作者提到的第一招就是“以空间换时间”,还举了一个例子,由于比较经典,引用一下:计算机程序中最大的矛盾是空间和时间的矛盾,那么,从这个角度出发逆向思维来考虑程序的效率问题,我们就有了解决问题的第1招--以空间换时间。比如说字符串的赋值:方法A:通常的办法#define LEN 32char string1 [LEN];memset (string1,0,LEN);strcpy (string1,"This is a example!!");方法B:const char原创 2010-11-03 22:44:00 · 12895 阅读 · 1 评论 -
最短路径算法-三种算法简介
转载自:http://hi.baidu.com/laozhonggu/blog/item/b7fd7e004653560f1d9583ae.html什么是Dijkstra算法?Dijkstra算法,A*算法和D*算法Dijkstra算法是典型最短路算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法能得出最短路径的最优解,但由于它遍历计算的节点很多,所以效率低。Dijkstra算法是很有代表性的最短路算法,在很多专业课程中都作为基本内原创 2010-11-03 22:42:00 · 1112 阅读 · 0 评论 -
背包九讲
P01: 01背包问题题目有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。基本思路这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。用子问题定义状态:即f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值。则其状态转移方程便是:f[i][v]=max{f[i-1][v],f[i-1][v-c[i]]+w[i]}这个方程非常重要,基本上所有跟背包相关的问题的方程都是由它衍生出来的。所以有必要将它详细解释一下:转载 2010-11-03 22:54:00 · 584 阅读 · 0 评论 -
所有因数之和 (题目来源:编程爱好者论坛)
第一题:时间限制:1s输入2个数字n,s。求数字n的所有因数之和除以s的余数。 比如输入6 5 6的因数有1,2,3,6,因数之和为12,因为12除以5的余数为2 于是输出2。 假设n,s都不超过5000000分析:公式:N可分解为a^m*b^n*c^p…… 那末N的所有正因数和为(1+a+a^2+……+a^m)*(1+b+b^2+……+b^n)*(1+c+c^2+……+c^p)……简略证明如下:由乘法法则可知,上述括号的连乘积为从所有括号中各取一个相乘,这样就可以保证它包含所有因数稍微举个简单的例子更好理原创 2010-11-03 23:09:00 · 1676 阅读 · 0 评论 -
计算几何
<br />1. 矢量减法<br />设二维矢量 P = (x1,y1) ,Q = (x2,y2)<br />则矢量减法定义为: P - Q = ( x1 - x2 , y1 - y2 )<br />显然有性质 P - Q = - ( Q - P )<br />如不加说明,下面所有的点都看作矢量,两点的减法就是矢量相减;<br />2.矢量叉积<br />设矢量P = (x1,y1) ,Q = (x2,y2)则矢量叉积定义为: P × Q = x1*y2 - x2*y1 得到的是一个标量<br />显原创 2010-11-13 20:37:00 · 460 阅读 · 0 评论 -
前缀 中缀 后缀表达式2
对于未经训练的用户来说,计算机科学领域中数学表达式求值的传统方法即不顺手又难以使用;软件工程师 Nikola.Stepan旨在改变这些传统方法。他的 applet W3Eval对表达式求值与您用纸笔计算的一系列步骤完全一致,但更快并且没有错误。请往下读,了解这一挑战 — 人类易读的数学到 Java 代码的转换。还记得在您的第一台科学计算器上用逆波兰表示法奋斗的经历吗?W3Eval applet 无法让您可信赖的 HP-41 更易用,正如它的名称所暗示— 一个只能运行于 Web 的表达式求值程序。但它的确提供转载 2010-11-18 10:57:00 · 1372 阅读 · 0 评论 -
前缀 中缀 后缀表达式1
<br />一.表达式的三种形式: <br /> 中缀表达式:运算符放在两个运算对象中间,如:(2+1)*3; <br /> 后缀表达式:不包含括号,运算符放在两个运算对象的后面,所有的计算按运算符出现的顺序,严格从左向右进行(不再考虑运算符的优先规则,如:2 1 + 3 *; <br /> 前缀表达式:同后缀表达式一样,不包含括号,运算符放在两个运算对象的前面,如:* + 2 1 3。 <br /><br />二.表达式的计算: <b转载 2010-11-18 11:10:00 · 686 阅读 · 0 评论