![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法设计与分析
鏡花水月灬
这个作者很懒,什么都没留下…
展开
-
算法设计与分析11——回溯算法
回溯算法回溯法是一种组织搜索的一般技术,有“通用的解题法”之称,用它可以系统的搜索一个问题的所有解或任一解。有许多问题,当需要找出它的解集或者要求回答什么解是满足某些约束条件的最佳解时,往往要使用回溯法。可以系统地搜索一个问题的所有解或任意解,既有系统性又有跳跃性。回溯法的基本做法是搜索,或是一种组织得井井有条的,能避免不必要搜索的穷举式搜索法。这种以深度优先的方式系统地搜索问题的解的方法称为回溯法。2n皇后问题在n×n格的棋盘上放置彼此不受攻击的n个皇后。按照国际象棋的规则,皇后可原创 2020-05-08 23:19:55 · 224 阅读 · 0 评论 -
算法设计与分析10——贪心算法
鱼塘钓鱼问题约翰有h(1≤h≤16)个小时的时间,在该地区有n(2≤n≤25)个湖,这些湖刚好分布在一条路线上,该路线是单向的。约翰从湖1出发,他可以在任一个湖结束钓鱼。但他只能从一个湖到达另一个与之相邻的湖,而且不必每个湖都停留。假设湖i(i=1~n—1),以5分钟为单位,从湖i到湖i+1需要的时间用ti(0<ti≤192)表示。例如t3=4,是指从湖3到湖4需要花20分钟时间。已知在最初5分钟,湖i预计钓到鱼的数量为fi(fi≥0)。以后每隔5分钟,预计钓到鱼的数量将以常数di(di≥0..原创 2020-05-08 22:41:55 · 314 阅读 · 0 评论 -
算法设计与分析——拦截导弹
问题描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。 输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000的正整数),计算这套系...转载 2020-05-07 09:48:13 · 515 阅读 · 0 评论 -
算法设计与分析9——贪心算法
木棒加工问题现有n根木棒,已知它们的长度和重量。要用一部木工机一根一根地加工这些木棒。该机器在加工过程中需要一定的准备时间,是用于清洗机器,调整工具和模版的。木工机需要的准备时间如下:(1)第一根木棒需要1min的准备时间;(2)在加工了一根长为l ,重为w的木棒之后,接着加工一根长为l ' (l ≤ l' ),重为 w' ( w≤w')的木棒是不需要任何准备时间的,否则需要一分钟的准备...原创 2020-05-05 09:48:15 · 288 阅读 · 0 评论 -
算法设计与分析8——贪心算法
1、删数问题给定n位正整数a,去掉其中任意k≤n个数字后,剩下的数字按原次序排列组成一个新的正整数。对于给定的n位正整数a和正整数k,设计一个算法找出剩下数字组成的新数最小的删数方案。输入第1行是1个正整数a,第2行是正整数k。输出对于给定的正整数a,编程计算删去k个数字后得到的最小数。思路:采用贪心算法求解,最近下降点优先的贪心策略。参考代码如下:string ...原创 2020-05-05 08:14:44 · 268 阅读 · 0 评论 -
算法设计与分析7——贪心算法
从问题的初始状态出发,直接去求每一步的最优解,通过若干次的贪心选择,最终得出整个问题的最优解,这种求解方法就是贪心算法。从问题的初始状态出发,直接去求每一步的最优解,通过若干次的贪心选择,最终得出整个问题的最优解,这种求解方法就是贪心算法。从贪心算法的定义可以看出,贪心算法不是从整体上考虑问题,它所做出的选择只是在某种意义上的局部最优解,而由问题自身的特性决定了该题运用贪心算法可以得到最优解。...原创 2020-05-04 16:40:02 · 276 阅读 · 0 评论 -
算法设计与分析笔记6——动态规划
动态规划之0—1背包问题分析:背包容量为j,可选物品为i,i+1,…,n时0-1背包问题的最优值。则建立计算p(i,j)的递归式如下:参考代码如下:#include<bits/stdc++.h>using namespace std;#define NUM 50#define CAP 1500int w[NUM];int v[NUM];...原创 2020-04-26 19:51:08 · 159 阅读 · 0 评论 -
算法设计与分析5——动态规划
动态规划(该算法常用于求解具有某种最优性质的问题)1、基本思想:将待求解问题分将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。注:该问题分解得到的子问题往往不是相互独立的。在动态规划法中:我们可以用一个表记录所有以解的子问题的答案。不管这些子问题的解之后有没有被用到,只要它们被计算过就...原创 2020-04-26 19:35:34 · 336 阅读 · 0 评论 -
算法设计与分析4——分治法
分治法: 思想:将一个难以直接解决的大问题,划分成一些规模较小的子问题,以便各个击破,分而治之。 求阶过程:(1)划分 (2)划分子问题 (3)合并启发式规则:1. 平衡子问题:最好使子问题的规模大致相同。也就是将一个问题划分成大小相等的k个子问题(通常k=2),这种使子问题规模大致相等的做法是出自一种平衡(Balancing)子问题的思想,它几乎总是比子问题规模不等...原创 2020-04-22 14:51:35 · 440 阅读 · 0 评论 -
算法设计与分析3——递归分治策略
分治法的设计思想是,将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。可行性:如果原问题可分割成k个子问题(1<k≤n),且这些子问题都可解,并可利用这些子问题的解求出原问题的解,那么这种分治法就是可行的。一、递归算法:程序直接或间接调用自身的编程技巧1、优点:一个过程或函数在其定义或说明中又直接或间接调用自身的一种方法,它通常把一个大...原创 2020-04-16 15:17:25 · 359 阅读 · 0 评论 -
算法设计与分析2——递推算法
原创 2020-04-15 22:50:11 · 265 阅读 · 0 评论 -
算法设计与分析1——绪论
一、算法理论的两大论题:算法设计、算法分析1. 算法设计---对于一个问题如何设计一个有效的算法2. 算法分析---如何评价或判断一个算法的优劣二、为什么要学习算法理由1:算法——程序的灵魂问题的求解过程:分析问题→设计算法→编写程序→整理结果程序设计研究的四个层次:算法→方法学→语言→工具理由2:提高分析问题的能力算法的形式化→思维的逻辑性、条理性三、...原创 2020-04-15 20:13:54 · 834 阅读 · 0 评论