首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

算法之路(一)----最大子序列

优秀的算法甚至能给人amazing的感觉。 今天记录《数据结构与算法分析------C语言描述》中的一个最大子序列的问题。...问题 给定整数A1,A2,……,AN(可能有负数),设整数k取值i到j(i<=j),Ai到Aj的和的最大值(所有整数均为负数,则最大子序列和为0)。...后面会给出实际的运行时间,还是先分析和记录算法吧。 算法1 算法1是穷举式的尝试所有的可能,用三重嵌套for循环来求解最大子序列,但是运行的时间非常慢,时间复杂度是O(NNN),即N的立方。...第三种情况,需要加入一些计算,可以通过求出前半部分包含最后一个元素的最大和,后半部分包含第一个元素的最大和,然后将这两个和加在一起。...分析:该算法首先定义两个变量,maxSum用来记录当前求出的最大子序列和,subSum用来记录遍历的元素中非零和。

49830

最大公约数算法_最大公约数最快方法

二 辗转相除法 2.1 辗转相除法原理 辗转相除法也叫欧几里得算法,是一种非常古老的求解两个数的最大公约数的算法。...比如,10和25的最大公约数5等于25除以10的余数5和10的最大公约数;再比如51和21的最大公约数3等于51除以21的余数9和21的最大公约数,而9和21的最大公约数为3。...上面的算法原理中不是要求a大于b吗?如果调用时a值大于b值,比如a为51,b为21,那么情况跟上述算法原理是相符的。...2.3 辗转相除法的缺点 辗转相除法实现时因为使用了余运算的缘故导致其在面对大整数的时候性能不够理想。我们应尽量避免使用余运算。接下来介绍另一种最大公约数求解法。...return GetGCD(a-b, b); 7 else 8 return GetGCD(b-a, a); 9 } 3.3 更相减损术的缺点 更相减损术虽然避免了余运算

58811

C++经典算法题-最大公因数、最小公倍数、因式分解

18.Algorithm Gossip: 最大公因数、最小公倍数、因式分解 说明 最大公因数使用辗转相除法来,最小公倍数则由这个公式来:GCD * LCM = 两数乘积 解法 最大公因数可以使用递回与非递回求解...,因式分解基本上就是使用小于输入数的数值当作除数,去除以输入数值,如果可以整除就视为因数,要比较快的解法就是求出小于该数的所有质数,并试试看是不是可以整除,质数的问题是另一个课题,请参考 Eratosthenes...筛选质数。...代码示例-最大公因数/最小公倍数 #include #include int main(void) { int m, n, r; int...void factor(int*, int); // factor int main(void) { int ptable[N+1] = {0}; int count

44460

最大公约数算法很无聊吗?辗转相除法3行代码搞定

最大公约数算法不是很无聊,计算最大公约数是数学中一个重要的概念,可以用于判断两个数是否互质、分数的约分等,在很多领域都有广泛的应用。...最大公约数(Greatest Common Divisor, GCD)算法两个或多个整数的最大公因数的方法。常用的算法有辗转相除法、更相减损术、穷举法、质因数分解法等。...重复上述操作,直到两个数相等,则两个数的最大公约数就是这两个数。穷举法:从1到较小数遍历,判断是否是两个数的公因数,如果是则记录。得到的公因数中,最大的即为两个数的最大公约数。...质因数分解法:将两个数的质因数分解,并列出它们的公因数公因数中的最大值即为两个数的最大公约数。...下面是最大公约数算法的 Python 代码示例:def gcd(a, b): while b: a, b = b, a % b return a这是一种辗转相除法最大公约数的方法,它每次通过计算余数,

401140
领券