随笔分类 - 计算机算法设计与分析
摘要:算法设计与分析-众数问题(不需要预排序) 众数问题 问题描述: 给定含有n个元素的多重集合S,每个元素在S中出现的次数称为该元素的重数。多重集S中重数最大的元素称为众数。例如,S={1,2,2,2,3, 5}。多重集S的众数是2,其重数为3。 算法设计: 对于给定的由n个自然数组成的多重集S,计算S
阅读全文
摘要:动态规划算法之0-1背包问题 一、问题描述:有n 个物品,它们有各自的重量和价值,现有给定容量的背包,如何让背包里装入的物品具有最大的价值总和? 二、总体思路:根据动态规划解题步骤(问题抽象化、建立模型、寻找约束条件、判断是否满足最优性原理、找大问题与小问题的递推关系式、填表、寻找解组成)找出01背
阅读全文
摘要:动态规划背包问题之01背包详解 文章目录一、问题引入1.什么是动态规划?2.什么是背包问题?3.什么是01背包?4.背包问题怎么做?二、例题讲解1.题目:2.分析2.1 第一步:状态表示2.2 第二步:确定状态转移方程2.3 边界条件3.过程表示3.1 核心代码3.2 手动计算3.3 代码验证3.4
阅读全文
摘要:动态规划法(一)从斐波那契数列谈起 动态规划法与分治方法 动态规划(Dynamic Programming)与分治方法相似,都是通过组合子问题的解来求解原问题。不同的是,分治方法通常将问题划分为互不相交的子问题,递归地求解子问题,再讲它们的解组合起来,求出原问题的解。而动态规划应用于子问题重叠的情况
阅读全文
摘要:最大m子段和 最大M子段和 51Nod - 1052 题意描述:给定数组a,长度为n。给定整数m,求不相交的m段字段和的最大值。 当m == 1 时:该问题就是最大子段和问题。 设dp[i]为以a[i]结尾的最大子段和,当我们考虑dp[i]的时候如果dp[i-1] > 0那么肯定把a[i]接在后面最
阅读全文
摘要:动态规划-最大子矩阵和(ZOJ 1074 TO THE MAX ) 题目:有一个包含正数和负数的二维数组。一个子矩阵是指在该二维数组里,任意相邻的下标是1×1或更大的子数组。一个子矩阵的和是指该子矩阵中所有元素的和。本题中,把具有最大和的子矩阵称为最大子矩阵。例如,如下数组的最大子矩阵位于左下角,其
阅读全文
摘要:动态规划之--最大子段和/最大子矩阵和 一、最大子段和最大子段和针对的是一维的情形,采用蛮力法可以在O ( n 2 ) O(n^2)O(n 2 )的时间复杂度内进行求解。而采用动态规划的方法则则可以在O ( n ) O(n)O(n)的时间复杂度内进行求解。这里我们着重介绍动态规划的方法。问题描述:对
阅读全文
摘要:动态规划-最大子段和 一、最大子段和问题 问题描述:给定n个整数(可能有负数)组成的序列a1,a2,...,an,求该序列的最大子段和。如果所有整数都是负数,那么定义其最大子段和为0。 本题比较简单,我们要求一个最大的字段和,我们通过分析可以找到一定的规律,若是之后的值是正数,那么加上的话一定是一个
阅读全文
摘要:最大子段和-3种方法 问题描诉: 给定有n个整数(可能为负整数)组成的序列a1,a2,...,an,求该序列连续的子段和的最大值和区间。 如果该子段的所有元素和是负整数时定义其最大子段和为0。 输入:1 -2 4 5 -2 8 3 -2 6 3 7 -1 输出:32 , [3 , 11] 蛮力法:
阅读全文
摘要:Leetcode股票算法问题(买卖股票最佳时机)系列通解 由于最近需要面试,所以刷了刷动态规划的算法题,找到一篇好文章,特次记录,以防遗忘。 原文出处:Most consistent ways of dealing with the series of stock problems 股票问题一共有六
阅读全文
摘要:整数因子分解问题(递归分治法、动态规划) Description大于1的正整数n可以分解为:n=x1 * x2 * … * xm。 例如,当n=12 时,共有8 种不同的分解式: 12=12; 12=6 * 2; 12=4 * 3; 12=3 * 4; 12=3 * 2 * 2; 12=2 * 6;
阅读全文
摘要:分治法学习笔记——最近点对问题 Divide and Conquer 分而治之——分治算法学习笔记 分治法适用情景 该问题的规模缩小到一定的程度就可以容易地解决 (前提) 该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质 (关键) 利用该问题分解出的子问题的解可以合并为该问题的解
阅读全文
摘要:最长公共子序列 问题的描述:一个给定序列的子序列是在该序列中删去若干元素后得到的序列。 若给定序列X= { x1, x2,…, xm},则另一序列Z= {z1, z2,…, zk}是X的子序列是指存在一个严格递增的下标序列 {i1, i2,…, ik},使得对于所有j=1,2,…,k有 Xij=Zj
阅读全文
摘要:动态规划(用空间换时间的算法)原理逻辑代码超详细!参考自《算法导论》 动态规划(用空间换时间的算法)-实例说明和用法详解动态规划(DP)思想实例说明钢条切割问题矩阵链乘法问题应用满足的条件和场景本篇博客以《算法导论》第15章动态规划算法为本背景,大量引用书中内容和实例,并根据书中伪代码给出pytho
阅读全文
摘要:算法设计与分析——矩阵连乘(动态规划法、备忘录法) 问题描述 给定n个矩阵{A1,A2,…,An},其中,Ai与Ai+1是可乘的,(i=1,2 ,…,n-1)。用加括号的方法表示矩阵连乘的次序,不同的计算次序计算量(乘法次数)是不同的,找出一种加括号的方法,使得矩阵连乘的次数最小。 通俗的来说就是:
阅读全文
摘要:斐波那契数列前100个数字如下所示: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393
阅读全文
摘要:22.Generate Parentheses&n对括号的全部有效组合 Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses. For exampl
阅读全文
摘要:[算法系列] 搞懂递归, 看这篇就够了 !! 递归设计思路 + 经典例题层层递进 [算法系列] 搞懂递归, 看这篇就够了 !! 递归设计思路 + 经典例题层层递进 从学习写代码伊始, 总有个坎不好迈过去, 那就是遇上一些有关递归的东西时, 看着简短的代码, 怎么稀里糊涂就出来了. 今天我们就来好好好
阅读全文
摘要:[算法系列] 深入递归本质+经典例题解析——如何逐步生成, 以此类推,步步为营 本文是递归系列的第三篇, 第一篇介绍了递归的形式以及递归设计方法(迭代改递归),;第二篇以递归为引子, 详细介绍了快排和归排以及堆排的核心思想; 本篇主要通过几个题, 从递推, 归纳法的角度, 深入了介绍了递归的本质和具
阅读全文
摘要:循环赛日程表 (递归与分治) 文章目录1.题目2.问题分析3.什么是分治4.算法实现思路1.对表进行分析2.对表的实现1.递归2.循环5算法实现代码1.递归2.循环6.时间\空间复杂度1.递归1.空间复杂度2.时间复杂度2.循环1.空间复杂度2.时间复杂度1.题目设有n=2^k个运动员要进行网球循环
阅读全文