算法复习笔记(分治法、动态规划、贪心算法)

算法设计与分析期末复习题 一. 选择题 1.Hanoi塔问题如下图所示。现要求将塔座A上的的所有圆盘移到塔座B上,并仍按同样顺序叠置。移动圆盘时遵守Hanoi塔问题的移动规则。由此设计出解Hanoi塔问题的递归算法正确的为:(B) 4. 算法分析中,记号O表示(B ), 记号 表示(A ), 记号 表示(D)。 A.渐进下界 B.渐进上界 C.非紧上界 D.紧渐进界 E.非紧下界 以下关于渐进记号的性质是正确的有:( A) A. B. C. O(f(n))+O(g(n)) = O(min{f(n),g(n)}) D. 4 程 阅读详情

分治法

  分治法的基本思想是将一个规模为n的问题分解为k个规模较小的问题,这些子问题互相独立且与原问题相同(所以可以递归)。递归地解这些子问题,然后将各个子问题的解合并得到原问题的解。它的一般算法设计模式如下:

divide-and-conquer(P)
{
//|P|表示问题的规模,n0表示阈值,当规模不超过n0时,问题容易解出,不必分解
    if(|P|<=n0)   
        adhoc(P);
    //将P分解成子问题
    divide P into smaller subinstances P1,P2...Pk;
    //对子问题逐个求解
    for(i=0;i<=k;i++)
        yi=divide-and-conquer(Pi);
    //将各个子问题的解合并得到原问题的解 
    return merge(y1,y2,...,yk);
}

  分治法的示例有很多,比如数据结构中的二路归并排序。还有大整数乘法,Strassen矩阵乘法等。这边我们解释一个简单的实例,寻找逆序对。
  设A[1…n]是一个包含n个不同数的数组。如果在i小于j的情况下,有A[i]大于A[j],则(i,j)就成为A中的一个逆序对(inversion)。
  要确定一个数组中的逆序对的个数,可以采取分治法。将A分为两部分A1和A2,则A中逆序对的数目等于A1中逆序对的数目、A2中逆序对的数目和A1,A2合并时A1中比A2中元素大的数目。
  代码如下所示:

#define Maxsize 4
#include <IOSTREAM>
using namespace std;

int number[Maxsize]={
  
  8,3,4,1};

int Merge(int start,int mid,int end)
{
    int count=0;
    int temp[Maxsize];
    int i,j,k=0;
    i=start;
    j=mid+1;
    while (i<=mid&&j<=end)
    {
        if (number[i]>number[j])
        {
            count=count+mid-i+1;  //这句话是重点
            temp[k]=number[j];
            j++;
        }
        else
        {
            temp[k]=number[i];
            i++;
        }
        k++;
    }
    if(i<=mid)
    {
        for(;i<=mid;i++)
        {  
            temp[k]=number[i];  
            k++;  
        }
    }
    if(j<=end)
    {
        for(;j<=end;j++)
        {  
            temp[k]=number[j];  
            k++;  
        }
    }
    for(k=
[复习笔记] 算法分析与设计 1. 分治算法 1.1 理论梳理 1.1.1 适用情况 1.1.2 基本步骤 1.1.3 复杂性分析 1.2 算法实例 1.2.1 快速排序 1.2.2 归并排序 1. 分治算法 1.1 理论梳理 先看分治这一部分 1.1.1 适用情况 分治法所能解决的问题一般具有以下几个特征: 该问题的规模缩小到一定的程度就可以容易地解决 该问题可以分解为若干个规模... 阅读详情

相关推荐

算法设计与分析(复习总结,西工大,C/C++)

2019年11月8日 考完算法当晚……感觉凉了 死记不管用的,理解了才稳 考完看了一下模板,有些地方写错了,现场没时间debug(菜鸡抹泪.jpg) 简答题 0.算法的基本概念、性质及其与程序的联系、区别 算法:是指解决方案的准确而完整的描述,是一系列解决问题的清晰指令。 算法的性质: 输入:有零个或多个外部量作为算法的输入; 输出:算法产生至少一个量作为输出; 确定性:组成算法的每条指令...

weixin_44011353的博客 2832

VS配置RTKLIB(卫星定位开源代码)环境

@RTKlib代码调试教程-Visual Studio 2019 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 ##RTKLIB-rtklib_2.4.3 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 @RTKlib代码调试教程-Visual Studio 2019 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技

qq_42209977的博客 4486

Image Sensor常见分辨率下HTS,VTS设置

image sensor,HTS,VTS

propor的专栏 4974

CPU系统级验证——测试激励——imperas公司riscvOVPsimPlus文件分析

本分析重点关注该repo向量扩展部分。 1. repo简介 该repo是指令集验证的仿真环境包括,大部分是指令集的测试用例,也包含了一些模拟器,如riscvOVPsimPlus。 主要介绍的是riscvOVPsimPlus指令集模拟器,riscvOVPsimPlus(下面统称ISS)是imperas公司在riscvOVPsim基础上扩充了向量扩展的指令集模拟器,该repo于今年9月份部分开源 什么叫部分开源呢? 首先该repo必须在imperas官网注册下载,而且必须是企业用户(免费邮箱人家瞧不上.

知识,既贵,又便宜。 4459

富士SC2022,C325,C328打印机扫描到网络详细教程

富士打印机SC2022,C328,C325等型号扫描到电脑教程

weixin_41926602的博客 1万+

光伏发电系统模拟及其发电预测开源python工具pvlib

本文介绍光伏发电系统模拟及其发电预测开源python工具pvlib,以及举例介绍获取辐照度方法、光伏发电预测思路。

肖永威的专栏 1万+

DELL SC存储扩容避坑指南:6Gb vs 12Gb扩展柜混插的真相

本文深入解析DELL SC存储扩容中6Gb与12Gb扩展柜混插的核心规则与性能影响。文章指出,从SCOS 7.3版本起允许混插,但整个SAS环路速率将降至最低设备水平,尤其在12Gb控制器上接入6Gb扩展柜会严重拖累性能。指南提供了清晰的兼容性矩阵、实战操作流程及关键避坑清单,帮助管理员安全、高效地完成存储扩容。

weixin_28314575的博客 458

Vectorless dynamic动态功耗分析——Voltus

power 计算工具会根据设计信息和用户提供的activity和switching约束来生成虚拟的worst-case的power vector,难点在于哪些instances视为switching,在没有仿真的前提下如何确定开关的时间,使用timing文件(TWF)

qq_44347276的博客 2787

RK3588 固定hdmiin的dev/videoX节点

RK3588 固定hdmiin的dev/videoX节点

目前从事linux驱动开发,多交流多学习吧 2050

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

上一篇: 《数据结构》复习之排序算法
下一篇: 算法复习笔记(回溯法,分支限界法)
King来写代码
博客等级 码龄12年 68粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值