![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法设计与分析
快乐小多多
帅哥无需解释
展开
-
【算法设计与分析期末复习】动态规划,状态转移方程
给定字符串A, B, C,判断C是否由A和B交错构成。交错构成的意思是,对于字符串C,可以将其每个字符标记为A类或B类,使得A类的每个字符顺序构成了A字符串,B类的每个字符顺序构成了B字符串。例如:A=”rabbit” B=”mq”, ”rabmbitq”是由A和B交错构成的,但”rabbqbitm”不是由A和B交错构成。 请设计动态规划算法求解,要求: 1)描述状态表示和状态转移方程; 2)并给出算法描述或者程序。 答案: 假设dp[i][j]表示A的前i个字符和B的前j个字符是否能够交错构成C的前i+j原创 2022-01-20 22:37:35 · 612 阅读 · 0 评论 -
【算法分析与设计期末复习】贪心算法交换论证
给定正整数数组A,请设计一个方法把这些整数拼接起来,使得拼接结果数最大。例如:A = [1, 32, 212],拼接结果为322121。 1)设计一个贪心算法,输出拼接结果(字符串格式),并分析算法的复杂度;(15分) 2)证明该算法的正确性。(10分) 答案: 1) 对于所有整数按照字典序降序排列,然后依次拼接整数,输出字符序列。 复杂度为O(nlgn) 参考程序如下: #include <iostream> #include <sstream> #include <vect原创 2022-01-20 22:35:37 · 926 阅读 · 0 评论 -
算法设计与分析期末必做题
在一个平面上有一个圆和n条直线,这些直线中每一条在圆内同其他直线相交,假设没有3条直线相交于一点,试问这些直线将圆分成多少区域。 1)写出递归方程; 2)编写程序计算划分的区域个数,输入为n。 答案: 1) F(n) = F(n - 1) + n F(1) = 2; 2) long F(int n) { if (n == 1) return 2; return F(n-1) + n; } ...原创 2022-01-20 22:28:06 · 470 阅读 · 0 评论