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

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

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

    52330

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

    二 辗转相除法 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 更相减损术的缺点 更相减损术虽然避免了余运算

    63011

    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

    56160

    C语言——最大公因数和最小公倍数

    本文将详细介绍C语言中最大公因数和最小公倍数的方法,并附上代码示例。...一、最大公因数 最大公因数的方法有很多,其中较著名的有欧几里得算法(Euclidean Algorithm)和辗转相除法(Division Algorithm)。...在这里,我们以欧几里得算法为例进行讲解。 欧几里得算法的基本思想是:两个数的最大公因数等于较大数与较小数的最大公因数。...:%d\n", result); return 0; } 运行结果: 二、最小公倍数 最小公倍数的方法有很多,其中较著名的方法是:两个数的最小公倍数等于它们的乘积除以最大公因数。...b); int result = lcm(a, b); printf("最小公倍数是:%d\n", result); return 0; } 运行结果: 总结,最大公因数和最小公倍数在计算机科学和工程领域中有着广泛的应用

    28510
    领券