软考考点之下午题算法与程序设计 求最优配对方案字符对数

如2018年下半年下午第四题:

软考考点之下午题算法与程序设计 求最优配对方案字符对数

软考考点之下午题算法与程序设计 求最优配对方案字符对数

题:4.1(8分)
根据题干说明,填充C代码中的空(1)-(4)。
题:4.2 (4分)
根据题干说明和C代码,算法采用的设计策略为(5)
算法的时间复杂度为(6),(用O表示)。
题:4.3 (3 分〉
给定字符序列ACCGGUAGU ,根据上述算法求得最大字符对数为(7)

答:第一次看到题,还是一头雾水,甚至连题目要表达的意思都没搞懂,并且,看答案后,可以说是第一题填空题,全军覆没……。

字体解释是没太看明白的,直接看代码;直到空1处,大体是从5到n-1嵌套从1到n-k(这个可以理解为5前面的字符串)循环,下面是要做什么呢?

j=i+k;//j 代表从6位置开始的字符, j表示结束比较的位置

空1处填:max=C[i][j-1];//将一行的最后一个数用来放置配对字符对数,只是初始化max

for(   空2  ;t<=j-4;t++)//应该是关于初始化t的 ,t结合上下文应该是开始比较的位置  ;所以应该填 t=i  j-4应该是结束位置前四个字符处作为结束比较条件

if(  空3       &&max<C[i}[t-1]+1+C[t][j-1])//结合题中唯一的递归公式,可以知道应该是判断是不是匹配字符   ;应该填isMatch(B[t],B[j});

空4  是作为整体最大配对数的返回,应该填  max ;

总结:相比于2019年上半年的算法题,这道题,提示是相当少的,也比较难以理解,递归公式是解这道题的关键。尽管能够分析出递归公式就是要填的内容,但要想完全填对,还是挺困难的。

扩展:

如何看懂递归公式呢??????

递归算法概念是函数调用自己来实现的某种功能

1.递归是高中数学中的数列那一章讲的内容。数列这章讲了一个概念叫递推公式:如果已知数列的第1项(或前几 项),且从第二项(或某一项)开始的任一An与它的前一项An-1(或前几项)间的关系可以用一个公式来表 示,那么这个公式就叫递推公式,递推公式是给出数列的一种方法。

2.例如斐波那契数列的递推公式就是:An=An-1+An-2(n>2,a1=1,a2=1)

3.那么现在如果想用递归的方式表示斐波那契数列即可定义函数f(n):当n>2时f(n)=f(n-1)+f(n-2);当n=1时f(n)=1,当n=2时f(n)=1;

即private static int fibonacciRe(int i) {
if(i == 1 || i == 2)
return 1;
else if(i>2)
return fibonacciRe(i-1)+fibonacciRe(i-2);
else
return 0;
}

4.解释:其实说白了递归函数就是一个递推公式,只要递推公式往纸上一写,把项A替换成函数名字,把n替换成函的 参数即可,最后用if处理一下特殊参数值时的结果值就欧了。

所有的递归问题都可以用递推公式来表示,其实我们的计算机算法都来源于 数学,计算机算法是数学应用于生产的很好的一个例子!

说到这里,可以说对递归及递推有些理解了,但如何区分他们公式之间的不同呢?

通项、递推、递归的区别:
通项公式,是用自然数n的表达式表示数列的“通项”f(n)的公式,
递推,是由含有数列前边的若干项的表达式表示后边某一项的公式。
如果表达式中仅含数列前边的若干项(允许有常数系数),这个公式就叫递归公式。
软考考点之下午题算法与程序设计 求最优配对方案字符对数

 

从函数方程观点看,递推,递归公式实际都是函数方程,而通项公式则是它们的解。
为了方便,把只含数列中的项(可以带有系数)的递推公式叫递归公式,一般形式:
软考考点之下午题算法与程序设计 求最优配对方案字符对数

一旦给出通项公式,数列便被唯一地确定。但递推特别是递归公式却不然,给出一个递归公式后,会有无穷多数列都满足这个递归公式,这是因为,由k阶递归公式的数列,它的前k项无法由递归公式本身确定。但给出数列的前k项的值后,递归公式就唯一地确定了数列,把数列前k项的值叫初值条件。同一个递归公式,由于初值条件不同,将得到不同的数列。

这段话还是容易理解的。做一个简易例子,假如f(n+1)=2f(n),容易看出是一个等比数列,公比为2,符合这种条件的等比数列有无穷个,只有限定初项才能形成唯一一个数列。

构造首项为1,公比为q的等比数列,使它满足递归公式:

软考考点之下午题算法与程序设计 求最优配对方案字符对数

 

最后得到:
软考考点之下午题算法与程序设计 求最优配对方案字符对数

称之为递归公式的特征方程

 如果两个通项公式满足递归公式,则
1.每一项乘以一个常数仍满足
2.相乘之后,两个通项公式的各项再相加,依然符合递归公式。

 如:

软考考点之下午题算法与程序设计 求最优配对方案字符对数