习题3 递推关系

合集下载

04.递推算法(C++版包括习题参考答案)

04.递推算法(C++版包括习题参考答案)
min{m , n}1 i 0
s 1=
(n i ) * (m i )
2.长方形和正方形的个数之和s 宽为1的长方形和正方形有m个,宽为2的长方形和正方形有 m-1个,┉┉,宽为m的长方形和正方形有1个; 长为1的长方形和正方形有n个,长为2的长方形和正方形有n1个,┉┉,长为n的长方形和正方形有1个; 根据乘法原理
【参考程序】 #include<iostream> using namespace std; int main() { int f[1001][2],n,i,x; cin>>n; f[1][1]=1;f[1][0]=9; for(i=2;i<=n;i++) { x=f[1][0]; if(i==n)x--; f[i][0]=(f[i-1][0]*x+f[i-1][1])%12345; f[i][1]=(f[i-1][1]*x+f[i-1][0])%12345; } cout<<f[n][0]; return 0; }
下面是输入n,输出x1~xn的c++程序: #include<iostream> using namespace std; int main() { int n,i,j,a[101]; cout<<"input n:"; //输入骨牌数 cin>>n; a[1]=1;a[2]=2; cout<<"x[1]="<<a[1]<<endl; cout<<"x[2]="<<a[2]<<endl; for (i=3;i<=n;i++) //递推过程 { a[i]=a[i-1]+a[i-2]; cout<<"x["<<i<<"]="<<a[i]<<endl; } } 下面是运行程序输入 n=30,输出的结果: input n: 30 x[1]=1 x[2]=2 x[3]=3 ........ x[29]=832040 x[30]=1346269

浅析数列应用题中的递推关系

浅析数列应用题中的递推关系
阅读题目、分析题意、联想、归纳、概括、建模,将实际问题抽象 成纯数学问题,是解答应用问题的途径和关键,本文举例说明如何建立 递推数列模型来解决与浓度,增长率和利息等有关的问题。
一、稀释溶液 化工厂的某容器的容积为装满了浓度为100%的纯酒精,现欲使其稀 释,从中倒 出后用清水兑满,再从中倒出,又用清水兑满,为此反复进行了次,所 得的溶液浓度为多少?欲使浓度不超过50%,至少要进行多少次操作? 解:设操作次后的浓度为则操作次后的浓度为 即 故数列是首项为90%,公比为的等比数列,那么操作次后的浓度为 要使
t=s·10-1000n=40000(2-)-1000n 欲使Tn最大,则:,得,故n=5,此时s=7875。 即该厂家应生产7875件产品,做5千元的广告,
能使获利最大。 三、an= C·an-1+B,其中B、C为非零常数且
C≠1 例3、某企业投资1千万元于一个高科技项目,每
年可获利25%,由于企业间竞争激烈,每年底需要 从利润中取出资金200万元进行科研、技术改造与 广告投入,方能保持原有的利润增长率,问经过多 少年后,该项目的资金可以达到或超过翻两番(4 倍)的目标?(lg2=0.3)。
染者人数an=50n—30;从n+1日到30日,每天新感 染者人数构成等差数列bn,b1=50n-60,d2=—30, bn=(50n-60)+(n-1)(-30)=20n-30,11月30日新感染 者人数为b30-n=20(30-n)-30=-20n+570.
故共感染者人数为:=8670,化简得:n261n+588=0,解得n=12或n=49(舍),即11月12日这一 天感染者人数最多,为570人。
分析:设经过n年后,该项目的资金为an万元, 则容易得到前后两年an和an-1之间的递推关系:an =an-1(1+25%)-200(n≥2),对于这类问题的具

递推算法分析

递推算法分析

3. 递推的实施步骤
(1)确定递推变量 递推变量可以是简单变量,也可以是一维或多维数组。 (2)建立递推关系 递推关系是递推的依据,是解决递推问题的关键。 (3)确定初始(边界)条件 根据问题最简单情形的数据确定递推变量的初始(边界) 值,这是递推的基础。 (4)对递推过程进行控制 递推过程控制:递推在什么时候结束,满足什么条件结束。
i=1;k=1.0;y[1]=k;
while(i<=5)
{ i++;y[i]=(4*y[i-1]-1)/5;
if(y[i]!=(int)y[i])
{ k=k+1.0;y[1]=k;i=1;}
}
x=5*y[1]+1;
printf("原有椰子至少有:%6.0f个.\n",x);
习题3: 1, 2, 3, 5, 6, 7
首先y(1)赋初值k(取值从1开始递增)后推出y(2), 由y(2)推出y(3),…,依此经5次递推得y(6)。如 果某一次推出的不是整数,则中止继续往后推,返 回k增1后赋值给y(1),从头开始。如果5次递推都 是整数,则输出原有椰子数5*y(1)+1后结束。
2. 算法描述
int i; double k,x,y[7];
1. 递推的概念
递推是计算机数值计算中的一个重要算法。思 想是通过数学推导,将复杂的运算化解为若干个重 复的简单运算,以充分发挥计算机善长重复处理的 特点
2. 递推关系
递推算法的首要问题是得到相邻的数据项之间的 关系,即递推关系。 递推关系是一种高效的数学模型,是递推应用的 核心。 递推关系不仅在各数学分支中发挥着重要的作用, 由它所体现出来的递推思想在各学科领域中更是显 示出其独特的魅力。

计算机算法设计与分析(第4版) 王晓东习题解答

计算机算法设计与分析(第4版) 王晓东习题解答

第一章作业1.证明下列Ο、Ω和Θ的性质1)f=Ο(g)当且仅当g=Ω(f)证明:充分性。

若f=Ο(g),则必然存在常数c1>0和n0,使得∀n≥n0,有f≤c1*g(n)。

由于c1≠0,故g(n) ≥ 1/ c1 *f(n),故g=Ω(f)。

必要性。

同理,若g=Ω(f),则必然存在c2>0和n0,使得∀n≥n0,有g(n) ≥ c2 *f(n).由于c2≠0,故f(n) ≤ 1/ c2*f(n),故f=Ο(g)。

2)若f=Θ(g)则g=Θ(f)证明:若f=Θ(g),则必然存在常数c1>0,c2>0和n0,使得∀n≥n0,有c1*g(n) ≤f(n) ≤ c2*g(n)。

由于c1≠0,c2≠0,f(n) ≥c1*g(n)可得g(n) ≤ 1/c1*f(n),同时,f(n) ≤c2*g(n),有g(n) ≥ 1/c2*f(n),即1/c2*f(n) ≤g(n) ≤ 1/c1*f(n),故g=Θ(f)。

3)Ο(f+g)= Ο(max(f,g)),对于Ω和Θ同样成立。

证明:设F(n)= Ο(f+g),则存在c1>0,和n1,使得∀n≥n1,有F(n) ≤ c1 (f(n)+g(n))= c1 f(n) + c1g(n)≤ c1*max{f,g}+ c1*max{f,g}=2 c1*max{f,g}所以,F(n)=Ο(max(f,g)),即Ο(f+g)= Ο(max(f,g))对于Ω和Θ同理证明可以成立。

4)log(n!)= Θ(nlogn)证明:∙由于log(n!)=∑=n i i 1log ≤∑=ni n 1log =nlogn ,所以可得log(n!)= Ο(nlogn)。

∙由于对所有的偶数n 有,log(n!)= ∑=n i i 1log ≥∑=n n i i 2/log ≥∑=nn i n 2/2/log ≥(n/2)log(n/2)=(nlogn)/2-n/2。

当n ≥4,(nlogn)/2-n/2≥(nlogn)/4,故可得∀n ≥4,log(n!) ≥(nlogn)/4,即log(n!)= Ω(nlogn)。

04.递推算法(C++版包括习题参考答案)

04.递推算法(C++版包括习题参考答案)

【例6】过河卒(Noip2002) 【问题描述】 棋盘上A点有一个过河卒,需要走到目标B点。卒行走的规则:可以向 下、或者向右。同时在棋盘上的任一点有一个对方的马(如C点),该马 所在的点和所有跳跃一步可达的点称为对方马的控制点,如图3-1中的C点 和P1,„„,P8,卒不能通过对方马的控制点。棋盘用坐标表示,A点 (0,0)、B点(n, m) (n,m为不超过20的整数),同样马的位置坐标是需要给 出的,C≠A且C≠B。现在要求你计算出卒从A点能够到达B点的路径的条数。
min{m , n}1 i 0
s 1=
(n i ) * (m i )
2.长方形和正方形的个数之和s 宽为1的长方形和正方形有m个,宽为2的长方形和正方形有 m-1个,┉┉,宽为m的长方形和正方形有1个; 长为1的长方形和正方形有n个,长为2的长方形和正方形有n1个,┉┉,长为n的长方形和正方形有1个; 根据乘法原理
【例3】棋盘格数
设有一个N*M方格的棋盘( l≤ N≤100,1≤M≤100)。求出该棋盘中包含有多少 个正方形、多少个长方形(不包括正方形)。 例如:当 N=2, M=3时: 正方形的个数有8个:即边长为1的正方形有6个;边长为2的正方形有2个。 长方形的个数有10个:即2*1的长方形有4个:1*2的长方形有3个:3*1的长 方形有2个:3*2的长方形有1个: 程序要求:输入:N,M 输出:正方形的个数与长方形的个数 如上例:输入:2 3 输出:8 10 【算法分析】 1.计算正方形的个数s1 边长为1的正方形个数为n*m 边长为2的正方形个数为(n-1)*(m-1) 边长为3的正方形个数为(n-2)*(m-2) ………… 边长为min{n,m}的正方形个数为(m-min{n,m}+1)*(n-min{n,m}+1) 根据加法原理得出

李凡长版组合数学课后习题答案习题3

李凡长版组合数学课后习题答案习题3

f(2)=1,f(3)=1,f(4)=2.
6. 求 n 位 0,1 序列中“ 010”只出现一次且在第 n 位出现的序列数 f(n). 解:最后三位是“ 010”的序列共有 2n-3 个。包括以下情况:
f(n) 包含了在最后三位第一次出现 010 的个数,同时排除了从
n-4 到 n-2 位第一次出现 010 的可能;
13. 在一个平面上画一个圆 , 然后一条一条地画 n 条与圆相交的直线 . 当 r 是 大于 1 的奇数时 , 第 r 条直线只与前 r -1 条直线之一在圆内相交 . 当 r 是偶数时 , 第 r 条直线与前 r -1 条直线都在圆内相交 . 如果无 3 条直线在 圆内共点 , 这 n 条直线把圆分割成多少个不重叠的部分?
2) 证明 f r (n, k)
n rk r , n r k( r 1)
k
解:可将本题转换为构造相应的 0-1 串的问题。将这样的 n 位 0-1 串与 1 到 n 的正整数对位,与 1 相应的整数选取,与 0 相应的不取。一个 0-1 串 对应一个选取方案。这也对应将相同的球放入不同的盒子的方案数。
解:设 f(n) 表示 n 个椭圆将平面分割成的部分的个数, 则有: 一个椭圆将平
面分成内、外两个部分,两个椭圆将平面分成 4 个部分。第二个椭圆的周界
被第一个椭圆分成两部分,这恰恰是新增加的域的边界。依此类推,第三个
椭圆曲线被前面两个椭圆分割成 4 部分,将平面分割成 4+4=8 个部分。若
n- 1 个椭圆将平面分割成 f(n-1) 个部分, 第 n 个椭圆和前 n-1 个椭圆两两
f (n) (n 2) f (n 1) ( n 1)
(6)

f (0) 1
解: f(n)=(n+2)f(n-1)=(n+2)(n+1)f(n-2)=

递推-递归-分治-回溯

递推-递归-分治-回溯

递推算法在程序编辑过程中,我们可能会遇到这样一类问题,出题者告诉你数列的前几个数,或通过计算机获取了数列的前几个数,要求编程者求出第N项数或所有的数列元素(如果可以枚举的话),或求前N项元素之和。

这种从已知数据入手,寻找规则,推导出后面的数的算法,称这递推算法。

典型的递推算法的例子有整数的阶乘,1,2,6,24,120…,a[n]=a[n-1]*n(a[1]=1);前面学过的2n,a[n]=a[n-1]*2(a[1]=1),菲波拉契数列:1,2,3,5,8,13…,a[n]=a[n-1]+a[n-2](a[1]=1,a[2]=2)等等。

在处理递推问题时,我们有时遇到的递推关系是十分明显的,简单地写出递推关系式,就可以逐项递推,即由第i项推出第i+1项,我们称其为显示递推关系。

但有的递推关系,要经过仔细观察,甚至要借助一些技巧,才能看出它们之间的关系,我们称其为隐式的递推关系。

下面我们来分析一些例题,掌握一些简单的递推关系。

例如阶梯问题:题目的意思是:有N级阶梯,人可以一步走上一级,也可以一步走两级,求人从阶梯底走到顶端可以有多少种不同的走法。

这是一个隐式的递推关系,如果编程者不能找出这个递推关系,可能就无法做出这题来。

我们来分析一下:走上第一级的方法只有一种,走上第二级的方法却有两种(两次走一级或一次走两级),走上第三级的走法,应该是走上第一级的方法和走上第二级的走法之和(因从第一级和第二级,都可以经一步走至第三级),推广到走上第i级,是走上第i-1级的走法与走上第i-2级的走法之和。

很明显,这是一个菲波拉契数列。

到这里,读者应能很熟练地写出这个程序。

在以后的程序习题中,我们可能还会遇到菲波拉契数列变形以后的结果:如f(i)=f(i-1)+2f(i-2),或f(i)=f(i-1)+f(i-2)+f(i-3)等。

我们再来分析一下尼科梅彻斯定理。

定理内容是:任何一个整数的立方都可以写成一串连续的奇数和,如:43=13+15+17+19=64。

算法设计与分析基础课后习题答案(中文版)

算法设计与分析基础课后习题答案(中文版)

Program算法设计与分析基础中文版答案习题1.15..证明等式gcd(m,n)=gcd(n,m mod n)对每一对正整数m,n都成立.Hint:根据除法的定义不难证明:●如果d整除u和v, 那么d一定能整除u±v;●如果d整除u,那么d也能够整除u的任何整数倍ku.对于任意一对正整数m,n,若d能整除m和n,那么d一定能整除n和r=m mod n=m-qn;显然,若d能整除n和r,也一定能整除m=r+qn和n。

数对(m,n)和(n,r)具有相同的公约数的有限非空集,其中也包括了最大公约数。

故gcd(m,n)=gcd(n,r)6.对于第一个数小于第二个数的一对数字,欧几里得算法将会如何处理?该算法在处理这种输入的过程中,上述情况最多会发生几次?Hint:对于任何形如0<=m<n的一对数字,Euclid算法在第一次叠代时交换m和n, 即gcd(m,n)=gcd(n,m)并且这种交换处理只发生一次.7.a.对于所有1≤m,n≤10的输入, Euclid算法最少要做几次除法?(1次)b. 对于所有1≤m,n≤10的输入, Euclid算法最多要做几次除法?(5次)gcd(5,8)习题1.21.(农夫过河)P—农夫W—狼G—山羊C—白菜2.(过桥问题)1,2,5,10---分别代表4个人, f—手电筒4. 对于任意实系数a,b,c, 某个算法能求方程ax^2+bx+c=0的实根,写出上述算法的伪代码(可以假设sqrt(x)是求平方根的函数)算法Quadratic(a,b,c)//求方程ax^2+bx+c=0的实根的算法//输入:实系数a,b,c//输出:实根或者无解信息If a≠0D←b*b-4*a*cIf D>0temp←2*ax1←(-b+sqrt(D))/tempx2←(-b-sqrt(D))/tempreturn x1,x2else if D=0 return –b/(2*a)else return “no real roots”else //a=0if b≠0 return –c/belse //a=b=0if c=0 return “no real numbers”else return “no real roots”5.描述将十进制整数表达为二进制整数的标准算法a.用文字描述b.用伪代码描述解答:a.将十进制整数转换为二进制整数的算法输入:一个正整数n输出:正整数n相应的二进制数第一步:用n除以2,余数赋给Ki(i=0,1,2...),商赋给n第二步:如果n=0,则到第三步,否则重复第一步第三步:将Ki按照i从高到低的顺序输出b.伪代码算法DectoBin(n)//将十进制整数n转换为二进制整数的算法//输入:正整数n//输出:该正整数相应的二进制数,该数存放于数组Bin[1...n]中i=1while n!=0 do {Bin[i]=n%2;n=(int)n/2;i++;}while i!=0 do{print Bin[i];i--;}9.考虑下面这个算法,它求的是数组中大小相差最小的两个元素的差.(算法略) 对这个算法做尽可能多的改进.算法MinDistance(A[0..n-1])//输入:数组A[0..n-1]//输出:the smallest distance d between two of its elements习题1.31.考虑这样一个排序算法,该算法对于待排序的数组中的每一个元素,计算比它小的元素个数,然后利用这个信息,将各个元素放到有序数组的相应位置上去.a.应用该算法对列表”60,35,81,98,14,47”排序b.该算法稳定吗?c.该算法在位吗?解:a. 该算法对列表”60,35,81,98,14,47”排序的过程如下所示:b.该算法不稳定.比如对列表”2,2*”排序c.该算法不在位.额外空间for S and Count[] 4.(古老的七桥问题)习题1.41.请分别描述一下应该如何实现下列对数组的操作,使得操作时间不依赖数组的长度. a.删除数组的第i 个元素(1<=i<=n)b.删除有序数组的第i 个元素(依然有序) hints:a. Replace the i th element with the last element and decrease the array size of 1b. Replace the ith element with a special symbol that cannot be a value of the array ’s element(e.g., 0 for an array of positive numbers ) to mark the i th position is empty. (“lazy deletion ”)第2章 习题2.17.对下列断言进行证明:(如果是错误的,请举例) a. 如果t(n )∈O(g(n),则g(n)∈Ω(t(n)) b.α>0时,Θ(αg(n))= Θ(g(n)) 解:a. 这个断言是正确的。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

习 题 三3-1 解下列递推关系:(1)⎩⎨⎧===+---1,001071021a a a a a n n n (2)⎩⎨⎧===++--1,00961021a a a a a n n n(3)⎩⎨⎧===+-2,00102a a a a n n (4)⎩⎨⎧==-=--121021a a a a a n n n(5)⎩⎨⎧===-+=---2,1,099210321a a a a a a a n n n n(解)(1)特征方程为010x 7x 2=+-。

解得2x 1=,5x 2=,故通解为n n n B A a 52⋅+⋅=分别令n =0,1,并代入初值1010==a a ,得关于系数A 、B 的方程组⎩⎨⎧=+=+1520B A B A 解得31-=A ,31=B 。

所以定解为 n a =()n n2531- (2)特征方程为0962=+-x x 。

解得321==x x ,故通解为()n n Bn A a 3⋅+=代入初值得⎩⎨⎧=+=1330B A A 解得0=A ,31=B 。

∴ 13331-==n nn n n a(3)特征方程为012=+x 。

解得i x ±=,故通解为()nn n i B i A a -⋅+⋅=代入初值得⎩⎨⎧=-=+2Bi Ai B A 解得i A -=,i B =。

∴ n a =()nn i i i i -+⋅-=()11---+n n i i =()1111---+n n i )(可以看出,此数列为:0,2,0,-2,0,2,0,-2,……。

当然本数列可以不用特征根法求解,直接由解递推关系就可观察出2--=n n a a ,从而由初值即得结果。

(4)用特征根法求解可得解为n a =1。

本小题虽然是二阶递推关系,但由于其特殊性,并不一定要用特征根法求解,而用迭代法可能更容易计算出结果。

即0122a a a -==2×1-1=1, 1232a a a -==2×1-1=1,…… 立即可以观察出n a =1(n =0,1,2,…)。

(5)特征方程为09923=+--x x x 。

解得31-=x ,12=x ,33=x ,故通解为()n nn C B A a 33++-=代入初值得方程组⎪⎩⎪⎨⎧=++=++-=++2991330C B A C B A C B A 解得121-=A ,41-=B ,31=C 。

∴ ()n n n a 331413121⋅+---==()[]1131341--+--n n 3-2 求由A ,B ,C ,D 组成的允许重复的排列中AB 至少出现一次的排列数。

(解)设由A ,B ,C ,D 组成的字符串为s =()n c c c 21,串的长度为n ,满足条件的串有n a 个,则 n a =13-n a +()2242--+n n a +()3342--+n n a +……+()0042+a即∑-=-=-1012n i i n n a a a +()14311--n 化简得221143----+-=-n n n n n a a a a ∴ ⎩⎨⎧====+----1044210221a a a a a a n n n n ,,解之得()()nn nn a 3263233263234---++-=3-3 求n 位二进制数中相邻两位不出现11的数的个数。

(解)设所求的数有n a 个,可将这样的数按左边第一位的值分成两类进行统计: (1) 第一位是0,这类数有1-n a 个;(2) 第一位是1,则按照题目条件,第二位就必须为0,故此类数有2-n a 个。

由加法法则,符合条件的数共有1-n a +2-n a 个。

因此,得n a 满足的递推关系为⎩⎨⎧==≥+=--3232121a a n a a a n n n ,,反推可得10=a ,所以⎥⎥⎦⎤⎢⎢⎣⎡⎪⎪⎭⎫ ⎝⎛--⎪⎪⎭⎫ ⎝⎛+=+++22225125151n n n n F a 3-4 利用递推关系求下列和(1)∑==nk n ks 02(解)由原式得⎩⎨⎧==+=-312121s s n s s n n , (3.2.2) 可以看出,1是齐次递推关系1-=n n s s 的特征根,故此非齐次定解问题的特解为*ns =()C Bn An n ++2=Cn Bn An ++23 为了利用待定系数法确定待定常数A 、B 、C ,将*n s 代入(3.2.2)的第一式得()n C Bn An+++23-()()()()11123-+-+-n C n B n A =2n即()()C B A n B A An +-+--2332=2n对任意的n ,上式成立的充分必要条件是n 的同次幂的系数相等,即方程组⎪⎩⎪⎨⎧=+-=-=003213C B A A B A 成立。

解之得 31=A ,21=B ,61=C 。

所以,(3.2.2)的特解为*ns =n n n 61213123++=()()6121++n n n 从而得(3.2.2)的通解()()n n n n A n n n s s s 16121⋅+++=+=*其中A 为任意常数。

再由初值条件11=s 得()()612111++⋅+A =1即0=A 。

所以(3.2.2)的定解,即和式的求和结果为()()6121++=n n n s n(2)()∑=-=nk n k k s 01(解)类似(1)得n s 满足的递推关系为⎩⎨⎧===-=--2021021s s s nn s s n n , 特解仍为*ns =()C Bn An n ++2=()Cn Bn An ++23 但关于待定系数A 、B 、C 的方程则变为⎪⎩⎪⎨⎧=+--=-=013213C B A A B A 解之得 31A =,0B =,31C -=。

即特解为 *ns =n n 31313-=()()311+-n n n 从而通解为n s =*ns +n s =()()311+-n n n +A再由初值条件0s 0=得0A =,所以n s =()()311+-n n n(3)()∑=+=nk n k k s 02(解)n s 满足的递推关系为⎩⎨⎧==+=--3021021s s n n s s n n ,,其特解为*ns =n n n 67233123++=()()6721++n n n 通解为n s =*ns +n s =()()6721++n n n +nA 1⋅其中A 为任意常数。

以初值条件31=s 代入得()()6712111+⨯+⋅+A =3即0=A 。

所以n s =()()6721++n n n(4)()()∑=++=nk n k k k s 021(解)n s 满足的递推关系为()()⎩⎨⎧==++=--6021101s s n n n s s n n ,,解之得n s =n n n n 234112341234+++=()()()4321+++n n n n(解)设n 位四进制数中2和3必须出现偶数次的数有n a 个,2出现奇数次3出现偶数次的数为 n b 个,2出现偶数次3出现奇数次的数为 n c 个,两者都出现奇数次的数为 n d 个。

则对于满足题目要求的数而言,可将其按照最高位数字的值分为3类情况分别予以统计:(1)最高位是0或1,那么在后续的1-n 个数字中2和3还必须出现偶数次,这样的四进制数共有2 1-n a 个;(2)最高位是2,后1-n 位必须有奇数个2偶数个3,这样的数有1-n b 个;(3)最高位是3,后1-n 位必须有偶数个2奇数个3,这样的数有1-n c 个。

各类情形,没有重复的数。

由加法法则,得n a 满足的递推关系n a =21-n a +1-n b +1-n c 。

同理也可得n b 、n c 和n d 满足的递推关系,即⎪⎪⎩⎪⎪⎨⎧++=++=++=++=------------1111111111112222n n n n n n n n n n n n n n n n d c b d d c a c d b a b c b a a , n ≥2 且知初值为21=a ,111==c b ,01=d 。

解之得∴ n a =1142--+n n ,(n ≥1)即所求的四进制数的个数。

3-6 试求由a ,b ,c 三个文字组成的n 位符号串中不出现aa 图像的符号串的数目。

(解)用n a 表示满足条件的串的个数,显然,1a =3,2a =23-1=8,当n ≥3时,将符合要求的串分为两类:第一类: 第一字母不是a ,这样的串有21-n a 个;第二类: 首字母为a ,次字母必为b 或c ,这样的串有22-n a 个。

综合以上情况有()⎩⎨⎧==+=--8322121a a a a a n n n , 解之得n a =()()n n316323316323--+++ba ba ab b a ab b a ++++1000010001000设行列式的值为n d ,则将行列式按第一行展开得n n b a ba abb a ab b a d ++++=10000010001000=()110000010001000-+++++n b a ba abb a ab b a b a-1100000100000001-+++n b a ba ab b a ab ab=()2110000010001000--++++-+n n b a ba abb a ab b a ab d b a=()b a +1-n d -ab 2-n d∴ ()⎩⎨⎧++=+=-+=--222121bab a d b a d abd d b a d n n n , 下面解递推关系,特征方程为()02=++-ab x b a x特征根为()221ba b a x -±+=,=a ,b对于通解,需根据a 与b 的关系分两种情形进行讨论:(1)b a =≠0:此时特征根a x =为二重根,故通解为 n d =()n a Bn A +,其中A 、B 为任意常数。

代入21,=n 时的初值得关于A 、B 的方程组()()⎩⎨⎧=+=+22322a a B A aa B A 解之得1==B A ,所以行列式的值为n d =()n a n +1,1≥n(2)b a ≠:有两个不同的特征根a 和b ,通解是n d =n n Bb Aa +代入初值得⎩⎨⎧++=++=+2222b ab a B b A a ba bB aA 解之得b a a A -=,ab bB -= 故有n d =n n b a b b a b a a -+-=b a b b a a n n ---++11 =nn n n n b ab b a b a a +++++---1221 ,1≥n3-8 在n ×m 方格的棋盘上,放有k 枚相同的车,设任意两枚不能互相吃掉的放法数为F k (n,m ),证明F k (n ,m )满足递推关系F k (n ,m)= F k (n -1,m )+(m -k +1) F k-1(n -1,m )(证)将放法分为两类:其一是第一行无棋子,共有()m n F k ,1-种放法;其二是第一行有车(且只能有一个),可以随意选一个车出来,先将其余k -1个车放入下边的n -1行,有()m n F k ,11--种放法,然后再把选出来的车放入第一行的某个格子,但要求该格子所在的列没有车,有()1--k m 列可供选择,故第二类放法总共有()()m n F k m k ,111-+--种。

相关文档
最新文档