![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ACM
文章平均质量分 65
liufei_learning
这个作者很懒,什么都没留下…
展开
-
基础算法-递推法
实用算法(基础算法-递推法-01) 有一类试题,每相邻两项数之间的变化有一定的规律性,我们可将这种规律归纳成如下简捷的递推关系式: Fn=g(Fn-1) 这就在数的序列中,建立起后项和前项之间的关系,然后从初始条件(或最终结果)入手,一步步地按递推关系递推,直至求出最终结果(或初始值)。很多程序就是按这样的方法逐步转载 2010-02-02 23:27:00 · 2670 阅读 · 1 评论 -
欧几里德算法 及 扩展欧几里德算法
<br /> 欧几里德算法<br />欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。其计算原理依赖于下面的定理:<br />定理:gcd(a,b) = gcd(b,a mod b)<br />证明:a可以表示成a = kb + r,则r = a mod b<br />假设d是a,b的一个公约数,则有<br />d整除与a, 整除与b,而r = a - kb,因此d整除与r<br />因此d是(b,a mod b)的公约数<br />假设d 是(b,a mod b)的公约数,则<br />d原创 2010-08-30 22:38:00 · 1225 阅读 · 0 评论 -
ACM基础题(二)
合并果子【问题描述】在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。多多决定把所有的果子合成一堆。每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过n-1次合并之后,就只剩下一堆了。多多在合并果子时总共消耗的体力等于每次合并所耗体力之和。因为还要花大力气把这些果子搬回家,所以多多在合并果子时要尽可能地节省体力。假定每个果子重量都为1,并且已知果子的种类数和每种果子的数目,你的任务是设计出合并的次序方案,使多多耗费的体力最少,原创 2010-09-10 14:26:00 · 4971 阅读 · 0 评论 -
伪代码的语法规则
<br /> 伪代码的使用 Usage of Pseudocode<br /> <br />伪代码(Pseudocode)是一种算法描述语言。使用为代码的目的是为了使被描述的算法可以容易地以任何一种编程语言(Pascal, C, Java, etc)实现。因此,伪代码必须结构清晰,代码简单,可读性好,并且类似自然语言。<br /> <br />下面介绍一种类Pascal语言的伪代码的语法规则。<br /> <br />伪代码的语法规则<br />在伪代码中,每一条指令占一行(else if 例外,),指令后转载 2010-09-04 15:58:00 · 8162 阅读 · 0 评论 -
ACM基础题
<br /> Problem A:Euclid's Game(欧几里德游戏) <br /> <br />题目的大意为:在一块板上一开始写有两个不相等的正整数。两个玩家交替写数字,每一次,当前玩家都必须在板上写出任意两个板上数字的差,而且这个数字必须是新的,也就是说,不能与板上任何一个已有的数字相同。当玩家再也写不出新数字时,他就输了。假设有A、B两个玩家,A先写,B后写。对于给定的两个数字,写程序判断是 A赢还是B赢。 <br /> <br />提示:A赢还是B赢的关键是找出能写在板上的数字的个数,如果是奇原创 2010-09-04 16:09:00 · 2245 阅读 · 0 评论 -
基础算法--计算几何
<br /> <br />一、引言<br />计算机的出现使得很多原本十分繁琐的工作得以大幅度简化,但是也有一些在人们直观看来很容易的问题却需要拿出一套并不简单的通用解决方案,比如几何问题。作为计算机科学的一个分支,计算几何主要研究解决几何问题的算法。在现代工程和数学领域,计算几何在图形学、机器人技术、超大规模集成电路设计和统计等诸多领域有着十分重要的应用。在本文中,我们将对计算几何常用的基本算法做一个全面的介绍,希望对您了解并应用计算几何的知识解决问题起到帮助。<br />二、目录<br />本文整理的计转载 2010-10-14 23:32:00 · 1771 阅读 · 1 评论 -
ACM基础题(四)
<br /> <br />输油管道问题<br /> <br />Description<br />问题描述: <br />某石油公司计划建造一条由东向西的主输油管道。该管道要穿过一个有n 口油井的油田。从每口油井都要有一条输油管道沿最短路经(或南或北)与主管道相连。如果给定n口油井的位置,即它们的x 坐标(东西向)和y 坐标(南北向),应如何确定主管道的最优位置,即使各油井到主管道之间的输油管道长度总和最小的位置? <br />编程任务: <br />给定n 口油井的位置,编程计算各油井到主管道之间的输油管原创 2010-10-20 23:33:00 · 1687 阅读 · 0 评论 -
凸包算法(一)--简介
<br /> 凸包应用程序(Visual Basic版-英文界面) (须解压缩) 凸包应用程序(Flash版SWF文件-中文界面)(你的计算机须安装Shockwave Flash软件,档案较小) 凸包应用程序(Flash版EXE文件-中文界面)(无需预先安装其它软件,但档案较大) <br />凸包(Convex Hull)<br />引言<br />欢迎光临本网页。在这个网页中,你可以学习到计算几何(Computational Geometry)中的「凸包」(Convex Hull)概念,以及求凸包原创 2010-10-20 23:40:00 · 2257 阅读 · 0 评论 -
凸包算法(二)--凸包面积
<br /> 凸包面积算法<br />1.选取p0作为y坐标最小的点,如果y坐标相等,选取x坐标最小的点<br />2.对剩余的点相对与p0点的极角进行排序<br />(比较叉积<http://blog.csdn.net/liufei_learning/archive/2010/10/14/5941947.aspx> )<br />3.去除极角相等的点,即距离最远的点<br />4.初始化堆栈<br />5.折线段拐向判断,若没有左转的时候出栈点,否则入栈<br />6.根据已有的点计算面积<br /> <原创 2010-10-20 23:44:00 · 8873 阅读 · 0 评论 -
基础算法--分治法
<br />大整数乘法<br />问题描述<br />通常,在分析一个算法的计算复杂性时,都将加法和乘法运算当作是基本运算来处理,即将执行一次加法或乘法运算所需的计算时间当作一个仅取决于计算机硬件处理速度的常数。<br /> 这个假定仅在计算机硬件能对参加运算的整数直接表示和处理时才是合理的。然而,在某些情况下,我们要处理很大的整数,它无法在计算机硬件能直接表示的范围内进行处理。若用浮点数来表示它,则只能近似地表示它的大小,计算结果中的有效数字也受到限制。若要精确地表示大整数并在计算结果中要求精确地得到原创 2010-08-17 15:16:00 · 822 阅读 · 0 评论 -
基础算法--递归(二)
/************************************************************************//*!!!回溯法用回溯法搜索迷宫的所有分支,intSecValue为当前所处的路口*//*********************************************************************原创 2010-05-03 21:22:00 · 661 阅读 · 0 评论 -
Cows 算法
两个方案1. 循环普通解法思路:new 一个牛圈,里面每个元素代表一头牛,元素值代表岁数。一年一年的循环计算,每个cow岁数都加一,如果岁数足够大到生孩子的年龄就生一个int cows(int year) { int sum = 1; const int N = 100; int* cows = new int[N];转载 2010-02-04 14:56:00 · 928 阅读 · 0 评论 -
01背包问题
问题描述: 有 n 件物品x1, x2, …, xn , 每件物品有一个价值和一个重量,分别记为: v1,v2, …vn w1,w2, …wn 其中所有的 wi 均为整数。 现有一个背包,其最大载重量为m,要求从这n件物品中任取若干件(这些物品每样只有一件,要么被装入要么被留下)。问背包中装入哪些物品可使得所装物品的价值和最大? (我们只需要求出最转载 2009-12-10 15:52:00 · 1011 阅读 · 0 评论 -
ACM常用基础—输入输出
1.get读入一个字符(1)cin.get() (2)cin.get(ch) (3)cin.get(ch,10,/n)cin.get(ch,10)2.getline读入一行字符(1)cin.getline(字符数组,字符个数,终止字符)Char ch[20]原创 2010-03-22 19:28:00 · 978 阅读 · 0 评论 -
ACM常用基础(二)常用函数
String char length();int_64输入输出__int 64 转化成stringSTL 字典序C/C++申请多维数组qsort(arr,n,sizeof(int),compare);//C语言排序三阶矩阵相乘原创 2010-03-30 21:10:00 · 1302 阅读 · 0 评论 -
ACM常用基础(三)总结
在做一道题的时候要把原理全部搞懂以后在开始,也就是先把算法明确,如果一段时间做不出来就要HELP(网络||请教别人||查资料)出现结果 wrong answer 有一种情况为溢出,需要换__int64用字符数组的时候,最后要记着加“/0”在急原创 2010-03-30 21:19:00 · 1650 阅读 · 0 评论 -
基础算法--递归(一)
1.汉诺塔#include using namespace std; void fac(int n, char A, char B, char C){if (n==1) cout"else{fac(n-1,A,C,B);cout"fac(n-1,B,A,C);}} int main(){int n;cin>>n;fa原创 2010-04-14 18:51:00 · 688 阅读 · 0 评论 -
算法--背包问题(3)
背包问题是一个关于最优解的经典问题。通常被讨论的最多的,最经典的背包问题是0-1背包问题(0-1 Knapsack Problem)。它是一切背包问题及相关背包问题的基础。本篇博文将详细分析0-1背包问题,并给出0-1背包问题的几种解法,同时也对0-1背包问题的内涵进行延伸,丰富其外延至完全背包问题和多重背包问题,并给出背包问题的算法实现过程,希望对大家有帮助。 一、0-1背包问题转载 2010-04-14 18:54:00 · 1271 阅读 · 0 评论 -
回溯法介绍
回溯法有时会遇到这样一类题目,它的问题可以分解,但是又不能得出明确的动态规划或是递归解法,此时可以考虑用回溯法解决此类问题。回溯法的优点 在于其程序结构明确,可读性强,易于理解,而且通过对问题的分析可以大大提高运行效率。但是,对于可以得出明显的递推公式迭代求解的问题,还是不要用回溯 法,因为它花费的时间比较长。回溯法的基本思想对于用回溯法求解的问题,首先要将问题进行适当的转化,得出状态空间树。 这转载 2010-05-03 21:38:00 · 964 阅读 · 0 评论 -
ACM基础题(三)
<br /> 【算法】:排列的字典序问题<br />Time Limit:2000MS Memory Limit:65536K<br />Total Submit:69 Accepted:13 <br />Description <br />n个元素{1,2,..., n }有n!个不同的排列。将这n!个排列按字典序排列,并编号为0,1,…,n!-1。每个排列的编号为其字典序值。例如,当n=3时,6 个不同排列的字典序值如下: <br />任务:给定n 以及n 个元素{1,2,..., n }的一个排列,原创 2010-10-20 23:48:00 · 1078 阅读 · 0 评论