摘要:
N皇后问题,我们在解决N皇后问题的时候,采用搜索的方法,dg记录的是左对角线的截距,udg记录的是右对角线的截距。之后便可以进行dfs进行求解了 #include <iostream> using namespace std; #define N 20 int n; bool col[N], dg[ 阅读全文
摘要:
逆序对板子,我们在求逆序的时候,仅仅需要进行在归并排序上加上 mid - i + 1即可 #include <iostream> using namespace std; typedef long long LL; const int N = 100010; int n, q[N], tmp[N]; 阅读全文
摘要:
归并排序原理如下: 我们首先进行对半划分,我们选择中间那个数字,之后把左右两个数组进行按位比较,组成一个新数组,之后再放回去。 紧接着进行递归。 分析复杂度分析,推导详见快排,原理差不多,复杂度O(n logn),但是快速排序是不稳定的排序,而归并排序是一个稳定的排序。 int tmp[N]; vo 阅读全文
摘要:
快速选择原理如下,选择第k大的数字: 我们在快速选择的时候,也同样用了划分的思想,随机选择一个中轴,双指针i, j,指针i从左往右扫描,指针j从右往左扫描,如果i < j 则进行交换,并且继续循环,直到遇到中轴,这时候我们的i和j均为中轴(理由:因为i,j相等),如果数字在中轴的左边,则向左递归,如 阅读全文
摘要:
快速排序原理如下: 我们在排序的时候,用到了划分的思想,随机选择一个中轴,双指针i, j,指针i从左往右扫描,指针j从右往左扫描,如果i < j 则进行交换,并且继续循环,直到遇到中轴,这时候我们的i和j均为中轴(理由:因为i,j相等)。我们在中轴左右递归,假设递归到了最后,也就交换了最后两个数。 阅读全文