算法
文章平均质量分 67
aby_byy
努力努力再努力⁽⁽ଘ(๑ơ ω ơ๑)ଓ⁾⁾
展开
-
【分治法】---归并排序
分治的基本概念: 把一个任务,分成形式和原任务相同,但规模更小的几个部分任务(通常是两个部分),分别完成,或只需要选择一部完成。然后再处理完成后的这一个或几个部分的结果,实现整个任务的完成。 归并排序是典型的分治问题。 归并排序(Merge)是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子...原创 2019-03-17 15:38:07 · 247 阅读 · 0 评论 -
动态规划---最长公共子序列(LCS)
问题描述:给出两个字符串,求出这样的一个最长公共子序列的长度:子序列中的每一个字符都能在两个原串中找到,而且每个字符的先后顺序和原串中的先后的顺序一致。例如:Sample Inputabcdbc abfcabprogramming contestabcd mnpSample Output4 //abcb2 //on0 设...原创 2019-07-29 19:47:48 · 200 阅读 · 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........这个数列从第3项开始,每一项都等于前两项之和。如果设F(n)为该数列的第n项(n∈N*),那么这句话可以写成如下形式:F(...原创 2018-06-22 16:35:08 · 1408 阅读 · 1 评论 -
N皇后问题(一)
N皇后问题是指在给定的NxN的棋盘上要摆N个皇后,要求任何两个皇后不同行,不同列,也不在同一条斜线上。给定一个整数n,返回n皇后的摆法有多少种。思考:如果在(i,j)位置(第i行第j列)放置了一个皇后,接下来哪些位置都不能放置皇后呢?整个第i行的位置都不能放置 整个第j列的位置都不能放置 入股位置(a,b)满足|a-i| == |b-j| ,说明(a,b)和(i,j)处在同一条斜线上,...原创 2019-08-02 21:10:48 · 418 阅读 · 2 评论 -
动态规划
动态规划解题的一般思路:1、将原问题分解为子问题把原问题分解成若干个子问题,子问题和原问题形式相同或类似,只不过规模变小了。子问题都解决,原问题即解决! 子问题的解一旦求出就会被保存,所以每个子问题只需求解一次。2、确定状态 在用动态规划解题时,我们往往将和子问题相关的各个变量的一组取值,称之为一个“状态”,一个“状态”对应于一个或多个子问题,所谓某个“状态”下的“值”,...原创 2019-07-28 18:57:38 · 77 阅读 · 0 评论 -
N皇后问题(二)--非递归
话不多说,N皇后思想以及递归代码--> N皇后非递归代码:#include<iostream>#include<math.h>using namespace std;bool Place(int *ar,int k){ for(int j = 1;j<k;++j) { if(ar[k] == ar[j] || abs(k-j) == ...原创 2019-08-08 12:22:45 · 261 阅读 · 0 评论 -
查找第k小的数
思路:主要利用快速排序的思想查找第K小的数,核心的思想就是快排的分治思想,具体思路:1 利用快排的Parition()函数将数组分成两部分,返回基准值value,小于value的都在左边,大于的在右边2 如果index刚好等于k,则说明index位置的数就是我们要找的数,如果值小于它,就肯定在左边,大于就在右边3 递归在index的左边或者右边进行查找/*题目描述:寻找第K...原创 2019-08-20 20:36:12 · 2608 阅读 · 1 评论