第一章
PE06
/**********
【题目】试写一算法,如果三个整数a,b和c的值
不是依次非递增的,则通过交换,令其为非递增。
***********/
void Descend(int &a, int &b, int &c)
/* 通过交换,令 a >= b >= c */
{
int t;
if( a< b)
{
t=a;a=b;b=t;
}
if( b< c)
{
t=b;b=c;c=t;
}
if( a< b)
{
t=a;a=b;b=t;
}
}
PE08
/**********
【题目】试编写算法求一元多项式
P(x) = a0 + a1x + a2x^2 + … + anx^n
的值P(x0),并确定算法中每一语句的执行次数和整个算法
的时间复杂度。
**********/
float Polynomial(int n, int a[], float x)
/* 求一元多项式的值P(x)。 */
/* 数组a的元素a[i]为i次项的系数,i=0,...,n */
{
int *p=a;
float t =x,sum =*a;//将t等于x,这样就可以之后t*=x;不然x*=x会翻倍
for(int i=1;i<=n;i++)
{
sum+=*(p+i)*t;
t*=x;
}
return sum;
}
PE11
/**********
【题目】已知k阶裴波那契序列的定义为
f(0)=0, f(1)=0, …, f(k-2)=0, f(k-1)=1;
f(n)=f(n-1)+f(n-2)+…+f(n-k), n=k,k+1,…
*****
意思是第n项一共有k项相加(当n大于k)
试编写求k阶裴波那契序列的第m项值的函数算法,
k和m均以值调用的形式在函数参数表中出现。
**********/
Status Fibonacci(int k, int m, int &f