![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法设计与分析【王晓东】
Vivid-victory
○( ^皿^)っHiahiahia…
展开
-
【递归】递归全排列的简单分析(三种全排列代码整理)
书本资料来源于:【计算机算法设计与分析(第五版)】【王晓东】【电子工业出版社】1.【例2-4】排列问题 P13#include <bits/stdc++.h>using namespace std;int sum=0;void Perm(int list[],int k ,int m){ if(k==m) { for(int i=0;i&原创 2019-03-06 16:35:18 · 7517 阅读 · 0 评论 -
【算法设计与分析】归并(合并)排序(分治算法经典问题)
本文主要代码及思路来源于:【算法设计与分析(第五版)】【王晓东】1、基本思想将待排序元素分成大小大致相同的2个子集合,分别对2个子集合进行排序,最终将排好序的子集合合并成为所要求的排序//递归描述void MergeSort(Type a[ ], int left, int right){ if (left<right) {//至少有2个元素 ...原创 2019-05-09 19:29:41 · 3580 阅读 · 0 评论 -
【算法设计与分析】棋盘覆盖(递归分治经典问题)
本博客主要代码及思路来源:【算法设计与分析(第五版)】【王晓东】1、题目背景介绍 在一个2k×2k 个方格组成的棋盘中,恰有一个方格与其它方格不同,称该方格为一特殊方格,且称该棋盘为一特殊棋盘。 在棋盘覆盖问题中,要用图示的4种不同形态的L型骨牌覆盖给定的特殊棋盘上除特殊方格以外的所有方格,且任何2个L型骨牌不得重叠覆盖。 易知,在任何一个2k×2k的棋...转载 2019-05-09 16:26:19 · 2200 阅读 · 0 评论 -
【算法设计与分析】活动安排问题(贪心经典问题)
说明:本博客主要代码及方法介绍来源于:【算法设计与分析(第5版)】【王晓东】一、题目背景介绍设有n个活动的集合E={1,2,…,n},其中每个活动都要求使用同一资源,如演讲会场等,而在同一时间内只有一个活动能使用这一资源。每个活动i都有一个要求使用该资源的起始时间si和一个结束时间fi,且si<fi 。如果选择了活动i,则它在半开时间区间[si, fi)内占用资源。活动i...原创 2019-05-02 15:45:14 · 4405 阅读 · 1 评论 -
【算法设计于分析作业题】判断序列中是否存在两个元素和恰好等于给定的整数 k
【第 15 题】有一个整数序列 a[n],设计一个算法判断其中是否存在两个元素和恰好等于给定的整数 k。1.直观想法思路:先排序,循环一遍每个元素,以当前元素为基准,用二分法寻找该元素之后数组中是否存在元素等于(k-a[i]),时间复杂度O(nlongn)。#include <bits/stdc++.h>using namespace std;const int maxn=...转载 2019-04-03 15:11:19 · 7015 阅读 · 2 评论 -
【算法设计与分析作业题】寻找多数元素(主元素问题)介绍
第一章习题【第 14 题】有一个含 n( n>2)个整数的数组 a,判断其中是否存在出现次数超过所有元素一半的元素。1.直观想法:遍历一遍数组,把每个数的值记录到标记数组book[]中,当出现有book[a[i]]>n/2时则输出”yes”,遍历一遍结束未找到有元素大于n/2,则输出“no”.#include <bits/stdc++.h>using namesp...转载 2019-04-03 15:03:10 · 3231 阅读 · 0 评论 -
【算法设计与分析】矩阵连乘问题(动态规划)
一、背景介绍1.题目给定n个矩阵{A1,A2,…,An} , 其中Ai与Ai+1 是可乘的i=1,2,…n-1, 考察这n个矩阵的连乘积 : A1A2…An矩阵连乘具有许多计算顺序原因:矩阵乘法满足结合律;这种计算次序可以用加括号的方式来确定。完全加括号若一个矩阵连乘积的计算次序完全确定,也就是说该连乘积已完全加括号;则可以依此次序反复调用2个矩阵...转载 2019-04-08 18:02:24 · 14061 阅读 · 2 评论 -
【算法设计与分析】算法的时间复杂度(介绍O渐近上界,Ω渐近下界,θ准确的界)
什么是时间复杂度?我们先看看一些函数的渐近表达式:关于时间复杂度的基本要点:1.时间复杂度反映的是随着问题规模的变大,计算所需的时间的增长速度,与系数的多少关系不大2.算法的渐近时间复杂度,简称时间复杂度,很多时候为了便于理解,直接把时间复杂度等同于O()是可以的。3.常见的时间复杂度,及其增长速度比较O(1)<O(log n)<O(n)<O(nlog n)<O(n^2...转载 2019-04-04 19:35:28 · 43163 阅读 · 8 评论 -
【递归】数据结构——栈的应用(递归经典:Hanoi汉诺塔)
代码来源于:【数据结构】【严蔚敏】递归经典问题:汉诺塔(插个题外话哈,Hanoi是越南首都河内)思路(关键理解点):假设只有两个盘子(实在没法完全理解全部过程的,把两个盘子的过程捋清楚了,代码也就记住了)(n=2,x=a,y=b,z=c){hanoi(1,x,z,y);{move(x,1,z)//这里的z在(n=2,x=a,y=b,z=c)实际为b盘1号盘:a-&amp;amp;gt;b}m...转载 2018-11-11 19:18:52 · 325 阅读 · 0 评论 -
【递归】 整数划分问题
资料主要来源于:【计算机算法设计与分析(第五版)】【王晓东】【电子工业出版社】例5 整数划分问题一些经典的递归问题(阶乘,斐波那契),问题本身都具有比较明显的递归关系,因而容易用递归函数直接求解。在本例中,如果设p(n)为正整数n的划分数,则难以找到递归关系,因此考虑增加一个自变量:将最大加数n1不大于m的划分个数记作q(n,m)。可以建立q(n,m)的如下递归关系。(1) q(n,1...转载 2019-03-15 14:59:25 · 3358 阅读 · 0 评论 -
【算法设计与分析】循环赛日程表(分治)
本文主要代码及思路来源于:【算法设计与分析(第五版)】【王晓东】【问题描述】设有n=2k个选手要进行网球循环赛,要求设计一个满足以下要求的比赛日程表:(1)每个选手必须与其他n-1个选手各赛一次;(2)每个选手一天只能赛一次;(3)循环赛在n-1天之内结束。【问题求解】按问题要求可将比赛日程表设计成一个n行n-1列的二维表,其中第i行、第j列表示和第i个选手在第j天...转载 2019-05-09 20:38:47 · 2693 阅读 · 0 评论