
算法程序设计艺术
文章平均质量分 71
谭墨墨快乐
这个作者很懒,什么都没留下…
展开
-
欧几里得算法和扩展的欧几里得算法
欧几里得算法又称辗转相除法给定两个正整数m,n。求他们的最大公约数,算法代码为#include "stdafx.h"#includeusing namespace std;int gcd(int m,int n){ int r=n%m; while(r!=0) { n=m; m=r; r=n%m; } return m;}i原创 2012-04-26 14:40:42 · 453 阅读 · 0 评论 -
编辑距离问题
问题描述:设A和B是2个字符串。要用最少的字符操作将字符A转化为字符B。字符操作包括:(1)删除一个人字符。(2)插入一个字符。(3)将一个字符改为另一个字符。将字符串A变换为字符串B所用的最少字符操作数称为字符串A到B 的编辑距离,记为d(A,B)。设计一个算法,对给定的任意两个字符串A和B计算出他们的编辑距离d(A,B).例如:输入: fxpi原创 2012-05-01 18:48:18 · 613 阅读 · 0 评论 -
位运算应用
位运算应用口诀 清零取反要用与,某位置一可用或若要取反和交换,轻轻松松用异或移位运算要点 1 它们都是双目运算符,两个运算分量都是整形,结果也是整形。 2 " 3 ">>"右移:右边的位被挤掉。对于左边移出的空位,如果是正数则空位补0,若为负数,可能补0或补1,这取决于所用的计算机系统。 4 ">>>"运算符,右边的位被挤掉,对于左边移出的空转载 2012-05-12 21:31:39 · 362 阅读 · 0 评论 -
如何使用位逻辑运算来实现位向量
如何使用位逻辑运算来实现位向量,及实现位向量的设置、清零和测试。加入有一个99999999大小的位,如果用一个int数组来表示其值得话,需要的大小为99999999.但是我们退一步想,每个int型表示32为,则99999999/32=312499余1,所以节省内存。因为只能使用位来表示,所以首先明白以下几点m除以2^n则商表示为mm除以2^n的余数表示为m&(2^n-1)将in原创 2012-05-12 21:30:12 · 1656 阅读 · 2 评论 -
子集和的递归解法和回溯法
子集和问题的一个实例为〈S,c〉。其中,S={x1,x2,…,xn}是一个正整数的集合,c是一个正整数。子集和问题判定是否存在S的一个子集S1,使得 ∑x=c, (其中x∈S1)。试设计一个解子集和问题的方法。你可以假设处理范围不超出int型。递归解法// 子集和问题(递归).cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#inclu原创 2012-06-15 19:54:31 · 1364 阅读 · 0 评论