原创 回溯思想解排列問題(一)

<pre name="code" class="cpp"> 搜索基本上算是算法的入門檻了,後續很多問題都是基於回溯思想的搜索性質解題的,當然這裏暫且指的是深搜(這是一個遞歸函數,調試起來很不方便)。所以在忍了兩個月之後要在這裏總結一下

原创 爲向量法求組合問題

#include <iostream> #include <stdio.h> #include <algorithm> #include <string.h> /* *位向量法解決組合問題,貌似是最易理解的方式 *建立一個向量,0表

原创 Node:原地歸併

#include <iostream> #include <stdio.h> #include <algorithm> #include <string.h> #include <stack> #include <queue> #def

原创 Node:普通歸併

#include <iostream> #include <stdio.h> #include <algorithm> #include <string.h> #include <stack> #include <queue> #def

原创 回溯法求排列(二)

考慮一個字符串排列問題,一個字符串的全排列可以怎麼分步進行? 方法一:依次排列,檢查每一次填入的數字是否與之前的相同,這裏要用到一個標記數組 方法二:把每一個元素挨個放到第一個位置,求解後n-1個元素的全排列,顯然這個也可以遞歸;

原创 Node:快速排序

#include <iostream> #include <stdio.h> #include <algorithm> #include <string.h> #include <iomanip> using namespace std

原创 Node:鏈式前向星

#include <iostream> #include <stdio.h> #include <algorithm> #include <string.h> #include <stack> #include <queue> #def

原创 Node:最小堆

#include <iostream> #include <stdlib.h> #include <ctime> using namespace std; const int maxn=1010; int heap[maxn]; in

原创 Node:線段樹的單點更新

#include <iostream> #include <stdio.h> #include <algorithm> #include <string.h> using namespace std; const int maxn=32

原创 Node:RMQ問題之ST算法

#include <iostream> #include <stdio.h> #include <cmath> using namespace std; const int maxn=1000010; const int N=1010;

原创 Network:socket+線程

#include <Winsock2.h> #include <iostream> #include <windows.h> using namespace std; const int maxn=10; /* 服務器端 */ //有

原创 區間DP-由矩陣連乘所想到的

1.最優三角剖分 #include <iostream> #include <sstream> #include <stdio.h> #include <algorithm> #include <string.h> #include <s

原创 一般DP-雙調取數問題

#include <iostream> #include <sstream> #include <stdio.h> #include <algorithm> #include <string.h> #include <stack> #in

原创 區間DP-矩陣連乘問題

#include <iostream> #include <sstream> #include <stdio.h> #include <algorithm> #include <string.h> #include <stack> #in

原创 分治-二叉樹重建

</pre><pre name="code" class="cpp">#include <iostream> #include <sstream> #include <stdio.h> #include <algorithm> #incl