一个问题多种算法
Posted hzb1224
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个问题多种算法相关的知识,希望对你有一定的参考价值。
例:y=a0 + a1*x + a2*x^2 + .....+ an*x^n
设计算法,求出给定任意x,得到的y的值
第一种思路,通过循环,依次相加
代码如下
double myfction(int m, int a[],double x) //m表示多少个常数项,数组a接收存放常数项的数组,x存放指定的数据 double p=0; int i; for (i = 0; i <= m - 1; i++) p = p + a[i]*pow(x, i); //累加求出最终值 return p;
通过上面的代码确实得到了正确的结果,但是运行的时间,解决的效率非常低,我们可以这样改进
以四项为例,通过一层一层的提出x我们可以得到最后的这个样子,我们在由内向外的计算,然后得到最后答案
代码如下:
double myfction1(int m, int a[], double x)
double p=a[m-1];
int i;
for (i = m-1; i >0; i--)
p = a[i-1] + x * p;
return p;
实现同样的功能,下面这个算法比上面这个算法效率高很多
为了验证,我们可以通过clock()函数来得到运行这两个函数分别需要多少时间,来证明下面一个算法比上面一个算法效率更高
在解决问题的时候,为了更有高效率的执行,在设计算法的时候,需要去做出相应的化解,变形等等
以上是关于一个问题多种算法的主要内容,如果未能解决你的问题,请参考以下文章