当前位置:首页 » 操作系统 » 可解算法

可解算法

发布时间: 2024-06-15 08:12:06

㈠ 程序员都应该精通的六种算法,你会了吗

对于一名优秀的程序员来说,面对一个项目的需求的时候,一定会在脑海里浮现出最适合解决这个问题的方法是什么,选对了算法,就会起到事半功倍的效果,反之,则可能会使程序运行效率低下,还容易出bug。因此,熟悉掌握常用的算法,是对于一个优秀程序员最基本的要求。


那么,常用的算法都有哪些呢?一般来讲,在我们日常工作中涉及到的算法,通常分为以下几个类型:分治、贪心、迭代、枚举、回溯、动态规划。下面我们来一一介绍这几种算法。


一、分治算法


分治算法,顾名思义,是将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。


分治算法一般分为三个部分:分解问题、解决问题、合并解。

分治算法适用于那些问题的规模缩小到一定程度就可以解决、并且各子问题之间相互独立,求出来的解可以合并为该问题的解的情况。


典型例子比如求解一个无序数组中的最大值,即可以采用分治算法,示例如下:


def pidAndConquer(arr,leftIndex,rightIndex):

if(rightIndex==leftIndex+1 || rightIndex==leftIndex){

return Math.max(arr[leftIndex],arr[rightIndex]);

}

int mid=(leftIndex+rightIndex)/2;

int leftMax=pidAndConquer(arr,leftIndex,mid);

int rightMax=pidAndConquer(arr,mid,rightIndex);

return Math.max(leftMax,rightMax);


二、贪心算法


贪心算法是指在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。


贪心算法的基本思路是把问题分成若干个子问题,然后对每个子问题求解,得到子问题的局部最优解,最后再把子问题的最优解合并成原问题的一个解。这里要注意一点就是贪心算法得到的不一定是全局最优解。这一缺陷导致了贪心算法的适用范围较少,更大的用途在于平衡算法效率和最终结果应用,类似于:反正就走这么多步,肯定给你一个值,至于是不是最优的,那我就管不了了。就好像去菜市场买几样菜,可以经过反复比价之后再买,或者是看到有卖的不管三七二十一先买了,总之最终结果是菜能买回来,但搞不好多花了几块钱。


典型例子比如部分背包问题:有n个物体,第i个物体的重量为Wi,价值为Vi,在总重量不超过C的情况下让总价值尽量高。每一个物体可以只取走一部分,价值和重量按比例计算。

贪心策略就是,每次都先拿性价比高的,判断不超过C。


三、迭代算法


迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程。迭代算法是用计算机解决问题的一种基本方法,它利用计算机运算速度快、适合做重复性操作的特点,让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值。最终得到问题的结果。


迭代算法适用于那些每步输入参数变量一定,前值可以作为下一步输入参数的问题。


典型例子比如说,用迭代算法计算斐波那契数列。


四、枚举算法


枚举算法是我们在日常中使用到的最多的一个算法,它的核心思想就是:枚举所有的可能。枚举法的本质就是从所有候选答案中去搜索正确地解。

枚举算法适用于候选答案数量一定的情况。


典型例子包括鸡钱问题,有公鸡5,母鸡3,三小鸡1,求m钱n鸡的所有可能解。可以采用一个三重循环将所有情况枚举出来。代码如下:



五、回溯算法


回溯算法是一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。

许多复杂的,规模较大的问题都可以使用回溯法,有“通用解题方法”的美称。


典型例子是8皇后算法。在8 8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问一共有多少种摆法。


回溯法是求解皇后问题最经典的方法。算法的思想在于如果一个皇后选定了位置,那么下一个皇后的位置便被限制住了,下一个皇后需要一直找直到找到安全位置,如果没有找到,那么便要回溯到上一个皇后,那么上一个皇后的位置就要改变,这样一直递归直到所有的情况都被举出。


六、动态规划算法


动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。


动态规划算法适用于当某阶段状态给定以后,在这阶段以后的过程的发展不受这段以前各段状态的影响,即无后效性的问题。


典型例子比如说背包问题,给定背包容量及物品重量和价值,要求背包装的物品价值最大。


㈡ 学会《周易》这7种变爻解算法,你也可以是预知未来的智者。

之前我们讲述了如何用最简便的方法给自己卜卦,这不是迷信,这是上古时代流传下来的哲学传统。但是每个人的信仰不同,所以卜卦的结果也有不同的结果。但总体来说,卦象的变化无非就是7种。掌握了这7个解卦秘诀,你离预知未来的事就又近了一步。

蒙卦

识记点1:在算卦中,如果没有遇到变爻的情况,就按照本卦的卦辞解释。

识记点2:在算卦中,如果有一个变爻。昨天我们讲过了,是按照本卦的变爻的爻辞来解这一卦。(具体什么是本卦,什么是变卦,变爻,什么是爻辞见上一个作品。)

师卦

识记点3:有两个变爻。在本卦中找出两个变爻的爻辞,根据两个爻辞的辞义解释。以上爻的义辞为主,下爻辞义为辅。

识记点4:有三个变爻。需要查出本卦和变卦的卦辞,以本卦的卦辞为主,变卦的卦辞为辅综合解释。

蒙卦中有一个变爻,变为师卦

识记点5:有四个变爻。在本卦中查出两个没变的爻的爻辞,以下爻的爻辞来解释这一卦。

识记点6:五个变爻。用本卦的变卦,用变卦中不变的那个爻的爻辞来解释。

识记点7:六个都变。查出本卦的变卦,用变卦的卦辞来解释本卦。

喜欢就点个赞吧!

㈢ 配方法、开方法、公式法算法和公式

1..配方法(可解全部一元二次方程)
2.公式法(可解全部一元二次方程)
3.因式分解法(可解部分一元二次方程)(因式分解法又分“提公因式法”、“公式法(又分“平方差公式”和“完全平方公式”两种)”和“十字相乘法”。
4.开方法(可解全部一元二次方程)一元二次方程的解法实在不行(你买个卡西欧的fx-500或991的计算器 有解方程的,不过要一般形式)
如何选择最简单的解法:
1、看是否可以直接开方解;
2、看是否能用因式分解法解(因式分解的解法中,先考虑提公因式法,再考虑公式法,最后考虑十字相乘法);
3、使用公式法求解;
4、除非题目要求,最后再考虑配方法(配方法虽然可以解全部一元二次方程,但是解题步骤太麻烦)。
一、知识要点:
一元二次方程和一元一次方程都是整式方程,它是初中数学的一个重点内容,也是今后学习数学的基础,应引起同学们的重视。
一元二次方程的一般形式为:ax^2+bx+c=0, (a≠0),它是只含一个未知数,并且未知数的最高次数是2的整式方程。
解一元二次方程的基本思想方法是通过“降次”将它化为两个一元一次方程。一元二次方程有四种解法:1、直接开平方法;2、配方法;3、公式法;4、因式分解法。
二、方法、例题精讲:
1、直接开平方法:
直接开平方法就是用直接开平方求解一元二次方程的方法。用直接开平方法解形如(x-m)2=n (n≥0)的方程,其解为x=m±√n
例1.解方程(1)(3x+1)^2=7 (2)9x^2-24x+16=11
分析:(1)此方程显然用直接开平方法好做,(2)方程左边是完全平方式(3x-4)^2,右边=11>0,所以此方程也可用直接开平方法解。
(1)解:(3x+1)^2=7
∴(3x+1)^2=7
∴3x+1=±√7(注意不要丢解)
∴x= ...
∴原方程的解为x1=...,x2= ...
(2)解: 9x^2-24x+16=11
∴(3x-4)^2=11
∴3x-4=±√11
∴x= ...
∴原方程的解为x1=...,x2= ...
2.配方法:用配方法解方程ax^2+bx+c=0 (a≠0)
先将固定数c移到方程右边:ax^2+bx=-c
将二次项系数化为1:x^2+(b/a)x=-c/a
方程两边分别加上一次项系数的一半的平方:x^2+(b/a)x+0.5(b/a)^2=-c/a+0.5(b/a)^2
方程左边成为一个完全平方式:[x+0.5(b/a)]^2=-c/a+0.5(b/a)^2
当b2-4ac≥0时,x+ =± √[-c/a+0.5(b/a)^2 ]-0.5(b/a)
∴x=...(这就是求根公式)
例2.用配方法解方程 3x^2-4x-2=0
解:将常数项移到方程右边 3x^2-4x=2
将二次项系数化为1:x^2-x=
方程两边都加上一次项系数一半的平方:x^2-x+( )^2= +( )^2
配方:(x-)^2=
直接开平方得:x-=±
∴x=
∴原方程的解为x1=,x2= .
3.公式法:把一元二次方程化成ax^2+bx+c的一般形式,然后把各项系数a, b, c的值代入求根公式就可得到方程的根。
当b^2-4ac>0时,求根公式为x1=[-b+√(b^2-4ac)]/2a,x2=[-b-√(b^2-4ac)]/2a(两个不相等的实数根)
当b^2-4ac=0时,求根公式为x1=x2=-b/2a(两个相等的实数根)
当b^2-4ac<0时,求根公式为x1=[-b+√(4ac-b^2)i]/2a,x2=[-b-√(4ac-b^2)i]/2a(两个共轭的虚数根)(初中理解为无实数根)
例3.用公式法解方程 2x^2-8x=-5
解:将方程化为一般形式:2x^2-8x+5=0
∴a=2, b=-8, c=5
b^2-4ac=(-8)2-4×2×5=64-40=24>0
∴x= = =
∴原方程的解为x1=,x2= .
4.因式分解法:把方程变形为一边是零,把另一边的二次三项式分解成两个一次因式的积的形式,让两个一次因式分别等于零,得到两个一元一次方程,解这两个一元一次方程所得的根,就是原方程的两个根。这种解一元二次方程的方法叫做因式分解法。
例4.用因式分解法解下列方程:
(1) (x+3)(x-6)=-8 (2) 2x^2+3x=0
(3) 6x^2+5x-50=0 (选学) (4)x^2-4x+4=0 (选学)
(1)解:(x+3)(x-6)=-8 化简整理得
x^2-3x-10=0 (方程左边为二次三项式,右边为零)
(x-5)(x+2)=0 (方程左边分解因式)
∴x-5=0或x+2=0 (转化成两个一元一次方程)
∴x1=5,x2=-2是原方程的解。
(2)解:2x^2+3x=0
x(2x+3)=0 (用提公因式法将方程左边分解因式)
∴x=0或2x+3=0 (转化成两个一元一次方程)
∴x1=0,x2=-是原方程的解。
注意:有些同学做这种题目时容易丢掉x=0这个解,应记住一元二次方程有两个解。
(3)解:6x2+5x-50=0
(2x-5)(3x+10)=0 (十字相乘分解因式时要特别注意符号不要出错)
∴2x-5=0或3x+10=0
∴x1=, x2=- 是原方程的解。
(4)解:x^2-4x+4 =0 (∵4 可分解为2 ·2 ,∴此题可用因式分解法)
(x-2)(x-2 )=0
∴x1=2 ,x2=2是原方程的解。
小结:
一般解一元二次方程,最常用的方法还是因式分解法,在应用因式分解法时,一般要先将方程写成一般形式,同时应使二次项系数化为正数。
直接开平方法是最基本的方法。
公式法和配方法是最重要的方法。公式法适用于任何一元二次方程(有人称之为万能法),在使用公式法时,一定要把原方程化成一般形式,以便确定系数,而且在用公式前应先计算判别式的值,以便判断方程是否有解。
配方法是推导公式的工具,掌握公式法后就可以直接用公式法解一元二次方程了,所以一般不用配方法解一元二次方程。但是,配方法在学习其他数学知识时有广泛的应用,是初中要求掌握的三种重要的数学方法之一,一定要掌握好。(三种重要的数学方法:换元法,配方法,待定系数法)。
例5.用适当的方法解下列方程。(选学)
(1)4(x+2)^2-9(x-3)^2=0 (2)x^2+2x-3=0
(3) x2-2 x=- (4)4x2-4mx-10x+m2+5m+6=0
分析:(1)首先应观察题目有无特点,不要盲目地先做乘法运算。观察后发现,方程左边可用平方差公式分解因式,化成两个一次因式的乘积。
(2)可用十字相乘法将方程左边因式分解。
(3)化成一般形式后利用公式法解。
(4)把方程变形为 4x^2-2(2m+5)x+(m+2)(m+3)=0,然后可利用十字相乘法因式分解。
(1)解:4(x+2)^2-9(x-3)^2=0
[2(x+2)+3(x-3)][2(x+2)-3(x-3)]=0
(5x-5)(-x+13)=0
5x-5=0或-x+13=0
∴x1=1,x2=13
(2)解: x^2+2x-3=0
[x-(-3)](x-1)=0
x-(-3)=0或x-1=0
∴x1=-3,x2=1
(3)解:x^2-2 x=-
x^2-2 x+ =0 (先化成一般形式)
△=(-2 )^2-4 ×=12-8=4>0
∴x=
∴x1=,x2=
(4)解:4x^2-4mx-10x+m^2+5m+6=0
4x^2-2(2m+5)x+(m+2)(m+3)=0
[2x-(m+2)][2x-(m+3)]=0
2x-(m+2)=0或2x-(m+3)=0
∴x1= ,x2=
例6.求方程3(x+1)^2+5(x+1)(x-4)+2(x-4)^2=0的二根。 (选学)
分析:此方程如果先做乘方,乘法,合并同类项化成一般形式后再做将会比较繁琐,仔细观察题目,我们发现如果把x+1和x-4分别看作一个整体,则方程左边可用十字相乘法分解因式(实际上是运用换元的方法)
解:[3(x+1)+2(x-4)][(x+1)+(x-4)]=0
即 (5x-5)(2x-3)=0
∴5(x-1)(2x-3)=0
(x-1)(2x-3)=0
∴x-1=0或2x-3=0
∴x1=1,x2=是原方程的解。
例7.用配方法解关于x的一元二次方程x^2+px+q=0
解:x^2+px+q=0可变形为
x^2+px=-q (常数项移到方程右边)
x^2+px+( )2=-q+( )2 (方程两边都加上一次项系数一半的平方)
(x+)2= (配方)
当p^2-4q≥0时,≥0(必须对p^2-4q进行分类讨论)
∴x=- ±=
∴x1= ,x2=
当p^2-4q<0时,<0此时原方程无实根。
说明:本题是含有字母系数的方程,题目中对p, q没有附加条件,因此在解题过程中应随时注意对字母取值的要求,必要时进行分类讨论。
练习:
(一)用适当的方法解下列方程:
1. 6x^2-x-2=0 2. (x+5)(x-5)=3
3. x^2-x=0 4. x^2-4x+4=0
5. 3x2+1=2x 6. (2x+3)2+5(2x+3)-6=0
(二)解下列关于x的方程
1.x^2-ax+-b2=0 2. x^2-( + )ax+ a2=0
练习参考答案:
(一)1.x1=-1/2 ,x2=2/3 2.x1=2,x2=-2
3.x1=0,x2= 4.x1=x2=2 5.x1=x2=
6.解:(把2x+3看作一个整体,将方程左边分解因式)
[(2x+3)+6][(2x+3)-1]=0
即 (2x+9)(2x+2)=0
∴2x+9=0或2x+2=0
∴x1=-,x2=-1是原方程的解。
(二)1.解:x^2-ax+( +b)( -b)=0 2、解:x^2-(+ )ax+ a· a=0
[x-( +b)] [x-( -b)]=0 (x- a)(x-a)=0
∴x-( +b)=0或x-( -b) =0 x- a=0或x-a=0
∴x1= +b,x2= -b是 ∴x1= a,x2=a是
原方程的解。 原方程的解。
测试(有答案在下面)
选择题
1.方程x(x-5)=5(x-5)的根是( )
A、x=5 B、x=-5 C、x1=x2=5 D、x1=x2=-5
2.多项式a2+4a-10的值等于11,则a的值为( )。
A、3或7 B、-3或7 C、3或-7 D、-3或-7
3.若一元二次方程ax^2+bx+c=0中的二次项系数,一次项系数和常数项之和等于零,那么方程必有一个根是( )。
A、0 B、1 C、-1 D、±1
4. 一元二次方程ax^2+bx+c=0有一个根是零的条件为( )。
A、b≠0且c=0 B、b=0且c≠0
C、b=0且c=0 D、c=0
5. 方程x^2-3x=10的两个根是( )。
A、-2,5 B、2,-5 C、2,5 D、-2,-5
6. 方程x^2-3x+3=0的解是( )。
A、 B、 C、 D、无实根
7. 方程2x^2-0.15=0的解是( )。
A、x= B、x=-
C、x1=0.27, x2=-0.27 D、x1=, x2=-
8. 方程x^2-x-4=0左边配成一个完全平方式后,所得的方程是( )。
A、(x-)2= B、(x- )2=-
C、(x- )2= D、以上答案都不对
9. 已知一元二次方程x^2-2x-m=0,用配方法解该方程配方后的方程是( )。
A、(x-1)^2=m2+1 B、(x-1)^2=m-1 C、(x-1)^2=1-m D、(x-1)^2=m+1
答案与解析
答案:1.C 2.C 3.B 4.D 5.A 6.D 7.D 8.C 9.D
解析:
1.分析:移项得:(x-5)^2=0,则x1=x2=5,
注意:方程两边不要轻易除以一个整式,另外一元二次方程有实数根,一定是两个。
2.分析:依题意得:a^2+4a-10=11, 解得 a=3或a=-7.
3.分析:依题意:有a+b+c=0, 方程左侧为a+b+c, 且具仅有x=1时, ax^2+bx+c=a+b+c,意味着当x=1时,方程成立,则必有根为x=1。
4.分析:一元二次方程 ax^2+bx+c=0若有一个根为零,则ax^2+bx+c必存在因式x,则有且仅有c=0时,存在公因式x,所以 c=0.另外,还可以将x=0代入,得c=0,更简单!
5.分析:原方程变为 x^2-3x-10=0,
则(x-5)(x+2)=0
x-5=0 或x+2=0
x1=5, x2=-2.
6.分析:Δ=9-4×3=-3<0,则原方程无实根。
7.分析:2x2=0.15
x2=
x=±
注意根式的化简,并注意直接开平方时,不要丢根。
8.分析:两边乘以3得:x^2-3x-12=0,然后按照一次项系数配方,x^2-3x+(-)2=12+(- )^2,
整理为:(x-)2=
方程可以利用等式性质变形,并且 x^2-bx配方时,配方项为一次项系数-b的一半的平方。
9.分析:x^2-2x=m, 则 x^2-2x+1=m+1
则(x-1)^2=m+1.
中考解析
考题评析
1.(甘肃省)方程的根是( )
(A) (B) (C) 或 (D) 或
评析:因一元二次方程有两个根,所以用排除法,排除A、B选项,再用验证法在C、D选项中选出正确选项。也可以用因式分解的方法解此方程求出结果对照选项也可以。选项A、B是只考虑了一方面忘记了一元
二次方程是两个根,所以是错误的,而选项D中x=-1,不能使方程左右相等,所以也是错误的。正确选项为C。
另外常有同学在方程的两边同时除以一个整式,使得方程丢根,这种错误要避免。
2.(吉林省)一元二次方程的根是__________。
评析:思路,根据方程的特点运用因式分解法,或公式法求解即可。
3.(辽宁省)方程的根为( )
(A)0 (B)–1 (C)0,–1 (D)0,1
评析:思路:因方程为一元二次方程,所以有两个实根,用排除法和验证法可选出正确选项为C,而A、B两选项只有一个根。D选项一个数不是方程的根。另外可以用直接求方程根的方法。
4.(河南省)已知x的二次方程的一个根是–2,那么k=__________。
评析:k=4.将x=-2代入到原方程中去,构造成关于k的一元二次方程,然后求解。
5.(西安市)用直接开平方法解方程(x-3)2=8得方程的根为( )
(A)x=3+2 (B)x=3-2
(C)x1=3+2 ,x2=3-2 (D)x1=3+2,x2=3-2
评析:用解方程的方法直接求解即可,也可不计算,利用一元二次方程有解,则必有两解及8的平方根,即可选出答案。
课外拓展
一元二次方程
一元二次方程(quadratic equation of one variable)是指含有一个未知数且未知数的最高次项是二次的整式方程。 一般形式为ax^2+bx+c=0, (a≠0)
在公元前两千年左右,一元二次方程及其解法已出现于古巴比伦人的泥板文书中:求出一个数使它与它的倒数之和等于 一个已给数,即求出这样的x与,使
x=1, x+ =b,
x^2-bx+1=0,
他们做出( )2;再做出 ,然后得出解答:+ 及 - 。可见巴比伦人已知道一元二次方程的求根公式。但他们当时并不接受 负数,所以负根是略而不提的。
埃及的纸草文书中也涉及到最简单的二次方程,例如:ax^2=b。
在公元前4、5世纪时,我国已掌握了一元二次方程的求根公式。
希腊的丢番图(246-330)却只取二次方程的一个正根,即使遇到两个都是正根的情况,他亦只取其中之一。
公元628年,从印度的婆罗摩笈多写成的《婆罗摩修正体系》中,得到二次方程x^2+px+q=0的一个求根公式。
在阿拉伯阿尔.花拉子米的《代数学》中讨论到方程的解法,解出了一次、二次方程,其中涉及到六种不同的形式,令 a、b、c为正数,如ax^2=bx、ax^2=c、 ax^2+c=bx、ax^2+bx=c、ax^2=bx+c 等。把二次方程分成不同形式作讨论,是依照丢番图的做法。阿尔.花拉子米除了给出二次方程的几种特殊解法外,还第一次给出二次方程的一般解法,承认方程有两个根,并有无理根存在,但却未有虚根的认识。十六世纪意大利的数学家们为了解三次方程而开始应用复数根。
韦达(1540-1603)除已知一元方程在复数范围内恒有解外,还给出根与系数的关系。
我国《九章算术.勾股》章中的第二十题是通过求相当于 x^2+34x-71000=0的正根而解决的。我国数学家还在方程的研究中应用了内插法。
[编辑本段]判别方法
一元二次方程的判断式:
b^2-4ac>0 方程有两个不相等的实数根.
b^2-4ac=0 方程有两个相等的实数根.
b^2-4ac<0 方程有两个共轭的虚数根(初中可理解为无实数根).
上述由左边可推出右边,反过来也可由右边推出左边.
[编辑本段]列一元二次方程解题的步骤
(1)分析题意,找到题中未知数和题给条件的相等关系;
(2)设未知数,并用所设的未知数的代数式表示其余的未知数;
(3)找出相等关系,并用它列出方程;
(4)解方程求出题中未知数的值;
(5)检验所求的答案是否符合题意,并做答.
[编辑本段]经典例题精讲

热点内容
安卓wlan有什么用 发布:2024-06-27 01:58:30 浏览:817
王者荣耀安卓怎么删除我的电脑 发布:2024-06-27 01:57:53 浏览:613
用什么软件可以升级配置 发布:2024-06-27 01:45:42 浏览:546
账号编程 发布:2024-06-27 01:43:36 浏览:551
矩阵压缩存储为了 发布:2024-06-27 01:42:37 浏览:547
python字典嵌套列表 发布:2024-06-27 01:42:26 浏览:761
vcs编译后报错 发布:2024-06-27 01:36:53 浏览:463
安卓手机表格怎么制作表格 发布:2024-06-27 01:32:31 浏览:952
oracle导入导出数据库 发布:2024-06-27 01:31:38 浏览:694
忘了手机号密码怎么办 发布:2024-06-27 01:23:19 浏览:653