prim算法:鏈接
克魯斯卡爾算法:鏈接
迪傑斯特拉算法
弗洛伊德算法:鏈接
代碼實現 只想抄個答案把題過了的可以直接複製下面的代碼: class Solution { public: int findDuplicate(vector<int>& nums) { int slow = 0, fast
Dijkstra算法屬於稍微複雜一些的算法,理解起來也不是那麼容易,當初在網上搜最短路徑算法的時候感覺大多數博文都講的不是那麼通俗,主要是代碼,許多需要註釋的地方都省略了。也不是說這樣做不好,註釋的越少越能提高程序員閱讀代碼的能力。
ACwing840模擬散列表 拉鍊法: #include<bits/stdc++.h> #define pii pair<int,int> #define ll long long #define cl(x) memset(x,0
洛谷P1736創意喫魚法 思路: 他要求一個矩陣只能並且必須在對角線上有1才能被喫掉。 如下: 1 0 0 0 1 0 0 0 1 我們用dp[i][j]表示這點滿足矩陣的最大值。 那麼看下圖: 1 0 0 0 0 1 0 1
AcWing841 字符串哈希 代碼: #include<bits/stdc++.h> #define pii pair<int,int> #define ll long long #define ull unsigned lon
POJ3279Fliptile 題意&思路: 有一個m*n的01矩陣,每次選一個格子會翻轉這個格子和他的上下左右。問是否能將所有的格子變成0,能就輸出翻轉次數最小的方案(有多個即輸出字典序最小的),0表示不反轉,1表示翻轉。如果沒
洛谷P1062 數列 思路: 挺有意思的一個題目。剛開始的想法是枚舉ki,然後把ki和數列前面的數相加。但是後來注意到每個數列的序號的二進制,可以發現: 1 3 4 9 10 12 13 30 31 30+31 32
#include <iostream> #include<vector> #include<algorithm> using namespace std; //一個大整數一個整數的除法,和餘數; vector<int> div(v
Node 每個Node用HashMap來實現, key是char, value是一個內部類Data Data有兩個成員, next指向下一個Node; isWord表示這個字母是不是單詞的結尾 內部類的成員和方法即使是pr
最近一段時間抽空看了霍夫曼壓縮和解壓縮的算法,覺得挺巧妙的,就決心自己動手用C實現,沒想到算法看看挺簡單的,實際都是做起來處處都需要仔細考慮纔行,折騰了一週左右終於調試通過了,收穫挺大的,付出總是有回報的! 閒話少說,下面就貼上我
主成分分析原理(PCA) 兩個矩陣相乘的意義是將右邊矩陣中的每一列向量 變換到左邊矩陣中以每一行行向量爲基所表示的空間中去。 選擇不同的基可以對同樣一組數據給出不同的表示,如果基的數量少於向量本身的維數,則可以達到降維的效果。 有一組 N
題目鏈接 ‘#’表示草坪,‘ . ’表示空地,然後可以選擇在任意的兩個草坪格子點火,火勢每一秒會向周圍四個格子擴散,問選擇那兩個點使得燃燒所有的草坪花費的時間最小。 暴力枚舉任意的草坪所在的點,然後兩個點壓進隊列裏面BFS,找一個滿足
題目鏈接:http://poj.org/problem?id=1042 這題是慕課郭煒老師算法課程裏面的一道例題,我用他教的思路寫出來的代碼。 代碼長了點 但是內容簡單 思路易懂! 附郭煒老師課件截圖和視頻講解地址 1、
#include<stdio.h> typedef long long ll; ll getNum(ll n) { if(n==1) return 0; ll sum=2*((n+1)/3)-1; if((n+1)%3==0)
#include<stdio.h> #include<queue> #include<utility> #include<vector> #include<algorithm> #include<string.h> using names