专业课学习
文章平均质量分 53
黑色柳丁Angel
从好处着眼即使阴天都变作好天
从好处着眼即使污渍都渗透美艳
展开
-
动态规划4:最长子段和
问题描述:最大子段和问题是将一个n个整数的序列a[1],a[2]….a[n]中字段a[i]….a[j]之和,(1<=i<=j<=n)求这些子段和中最大的。(连续的!)例如(a[1],a[2],a[3],a[4],a[5],a[6])=(-2,11,-4,13,-5,-2)时,最大子段和为20,子段为a[2],a[3],a[4]。...原创 2022-03-15 13:45:15 · 664 阅读 · 0 评论 -
算法:分治法之快速排序
思路:1.找一个支点元素pivot,一般选这组数的第一个2.把大于pivot的数都放在它的右边,小于它的数都放在左边3.分别对左右子序列进行1、2步操作(分治策略的体现)示例:19 97 09 17 01 08Pivot↑ ↑ L R选择第一个元素(19)作为支点pivot,...原创 2022-03-05 19:49:16 · 6310 阅读 · 0 评论 -
C++递归全排序(full permutation)
#include <iostream>using namespace std;//k:递归的层次(从0开始),m:边界(最后一个元素)下标void perm(int list[], int k, int m){ if (k == m) //当k到了最后面时,即只剩1个元素,此时list就是其中一个排列,输出list { for (int i = 0; i <= m; i++) { cout << list[i] << ' ';...原创 2022-03-06 14:25:16 · 863 阅读 · 0 评论 -
sort散列法排序
题目描述给你n个整数,请按从大到小的顺序输出其中前m大的数。输入每组测试数据有两行,第一行有两个数n,m(0<n,m<1000000),第二行包含n个各不相同,且都处于区间[-500000,500000]的整数。输出对每组测试数据按从大到小的顺序输出前m大的数。样例输入5 33 -35 92 213 -644样例输出213 92 3这是算法课的第一道OJ题,我的第一想法是利用冒泡排序把n个整数由大到小排序,再利用for循环输出前m个数字,虽然能实现题原创 2022-03-05 13:07:05 · 391 阅读 · 3 评论 -
算法:分治法之合并排序
合并排序算法思想:先将无序序列利用二分法划分为子序列,直至每个子序列只有一个元素(单个元素就是有序),然后再对有序子序列两两进行合并排序。合并方法是循环地将两个有序子序列当前的首元素进行比较,较小的元素取出,置入合并序列(这就是合并排序O(n)的辅助空间花销的来源,建立了一个新的空数组来接收排好序的子序列)的左边空置位,直至所有元素置入合并序列怎么划分就怎么合并!!!!(截图自B站up主:请叫我AXin 的视频)解释: (0+8)/ 2 = 4 所以下标为4及左边...原创 2022-03-05 22:44:20 · 1746 阅读 · 0 评论 -
动态规划1:动态规划的入门初学理论基础
动态规划算法的四个步骤:1.找出最优解的性质,并刻画其结构特征2.递归地定义最优值3.自底向上的方式计算最优值4.构造最优解 注:步骤1~3是动态规划算法的基本步骤,在只需要求出最优值的情况下,步骤4可 省略,若需要求出问题的最优解(具体的解的过程),则必须执行步骤四动态规划和分治法的异同:相同点:基本思想都是将待求解问题分解为若干子问题,先求解子问题,再结合这些子问题的解得到原问题的解。不同点:与分治法不同,适合动态规划法求解的问题经分解得到的子问题往往...原创 2022-03-10 23:30:05 · 1798 阅读 · 0 评论 -
动态规划2:算法考试矩阵连乘问题(超详细手写过程)
动态规划理论基础:(6条消息) 动态规划1:动态规划的入门初学理论基础_黑色柳丁Angel的博客-CSDN博客矩阵连乘问题是我在算法课接触的第一个动态规划问题,老师用了整整一节课介绍问题描述:给定n个矩阵{A1,A2,... ,An},其中相邻的两个矩阵(Ai与Ai+1)是可乘的(i=1,2,... ,n-1)。考察这n个矩阵的连乘积(A1A2...An)。由于矩阵乘法满足结合律,因此计算矩阵的连乘积可以有不同的计算次序。这种计算次序可以用加括号的方式来确定。例如:矩阵连乘积 A1.原创 2022-03-11 15:19:16 · 5259 阅读 · 5 评论 -
动态规划3:最长公共子序列
首先我们来区分一下子序列和子串:子串是连续的,子序列是一个字符串中删除若干元素后形成的(两个元素前后相对顺序不变)子序列包含子串例:str = abcdefg子串:cde子序列:acf问题 F: 最长公共子序列题目描述一个字符串A的子串被定义成从A中顺次选出若干个字符构成的串。如A=“cdaad" ,顺次选1,3,5个字符就构成子串" cad" ,现给定两个字符串,求它们的最长共公子串长度输入第一行两个字符串用空格分开。两个串的长度均小于2000 。输出.原创 2022-03-13 22:25:56 · 1163 阅读 · 0 评论