刷题7

   日期:2024-12-30    作者:zssgv 移动:http://3jjewl.riyuangf.com/mobile/quote/81597.html


1. 利用回溯算法求解八皇后问题
2. 利用回溯算法求解 0-1 背包问题
3. 利用分治算法求一组数据的逆序对个数
5. 最小路径和(详细可看 Minimum Path Sum)
6. 编程实现莱文斯坦最短编辑距离
7. 编程实现查找两个字符串的最长公共子序列
8. 编程实现一个数据序列的最长递增子序列

实践:

1、利用回溯算法求解八皇后问题

首先,我们要想到某种方法来解决冲突检测问题,即不能令棋子处于能相互吃掉的位置——相邻、左右对角线。
其次,运用回溯的方法,求得问题的解。此处具体为函数的递归调用,当调用到棋盘的最后一行,便跳出,求得解。

2、利用回溯算法求解 0-1 背包问题

3、利用分治算法求一组数据的逆序对个数

通过把一个数组不断的分成左右两个数组,即左序列和右序列,然后对每个部分求解逆序对,有3种情况:
(1)左序列的逆序对数量
(2)右序列的逆序对数量
(3)分离逆序对数量,即左序列有元素大于右序列中的元素
通过对一个数组不断的进行分解,直到分解成左右序列都是只包含一种元素的序列,此时左右序列的逆序对数量均为0,问题变成了第三种情况,即求解分离逆序对。
在分治算法对数组进行排序时,在合并的时候分别从左到右依次比较左序列和右序列中的元素,把最小的元素拿出来,当右边序列的元素B较小时,此时左边序列元素剩余量就是逆序对的数量,然后依次计算出当右序列元素较小时,左序列剩余元素的和就是总的逆序对数量。

4、编程实现莱文斯坦最短编辑距离

5、编程实现查找两个字符串的最长公共子序列

最长公共子串

最长公共子序列

子串要求字符必须是连续的,但是子序列就不是这样。

最长公共子序列是一个十分实用的问题,它可以描述两段文字之间的“相似度”,即它们的雷同程度,从而能够用来辨别抄袭。对一段文字进行修改之后,计算改动前后文字的最长公共子序列,将除此子序列外的部分提取出来,这种方法判断修改的部分,往往十分准确。
解法就是用动态回归的思想,一个矩阵记录两个字符串中匹配情况,若是匹配则为左上方的值加1,否则为左方和上方的最大值。一个矩阵记录转移方向,然后根据转移方向,回溯找到最长子序列。

 

6、编程实现一个数据序列的最长递增子序列


特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关最新动态
推荐最新动态
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号