原创 解析json串

    使用java進行網頁抓取時,有時會直接獲取到json串,json串要獲取的數據嵌套複雜,這裏自己寫一個遞歸的方式進行解析指定名稱的數據,進行記錄,以便日後複用。    原有json串:{ "total": 3, "class":

原创 馬踏棋盤

    馬踏棋盤屬於算法裏的經典問題,這裏用遞歸的方式給出一種解法:package test; /**  * Created by saishangmingzhu on 2018/11/25.  */ public class Mataq

原创 n後問題-回溯法

        n後問題:在n*n的×××上放置n個皇后,按照國際象棋的規則,使其彼此不***。即每兩個皇后之間不處於同一行、同一列、同一對角線。        首先,行不同可以理解爲第i個皇后必須在第i行,體現在算法中就是當第i個皇后確定

原创 旅行售貨員問題-分支界限法

旅行售貨員問題分支界限法package test; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import

原创 最大團問題-分支界限法

最大團問題-分支界限法遍歷所有點構造二叉樹;廣度遍歷樹,遍歷過程中判斷當前結點的點數據時,是否構成完全子圖,如果不能則只將右結點加入隊列,每次選取隊列中完全子圖最大的結點作爲活結點,無子結點時到達葉子結點,記錄爲一個完全子圖,優先隊列法中第

原创 旅行售貨員問題-回溯法

        旅行售貨員問題使用回溯法構建樹後,需要注意判斷最後的葉結點中的點數據是否和其實點有連接,如果沒有則不是解,如果有則需要把權值加上,纔是解。package test; import java.util.ArrayList;

原创 最大團問題-回溯法

        最大團問題屬於圖論裏的經典問題,典型的案例是找出朋友圈關係圖中最大的圈子,即兩兩相識的最大圈子。        這裏給出使用回溯法求解的兩個方案:        方案一:1.遍歷所有點構造二叉樹;              

原创 多機調度問題-貪心算法

        有n個完成時間不同的獨立任務,m臺處理機,n個任務在任意一臺處理機上完成及爲完成,一臺處理機在同一時間只能處理一個任務,要求給定任務時間和處理機數量時,完成所有任務的最短時間。        多機調度問題是一個NP完全問題,

原创 批處理作業調度-回溯法

        批處理作業調度不同於流水作業的地方在於要求所有作業完成的時間總和最小。package test; import java.util.ArrayList; import java.util.List; /**  * Cre

原创 批處理作業調度-分支界限法

        批處理作業調度-分支界限法package test; import java.util.ArrayList; import java.util.Collections; import java.util.Comparato

原创 流水作業調度問題-動態規劃

        流水作業調度問題分析過程比較複雜,不過網上可以搜到一大片,基本相同,但普遍都沒有對應動態規劃的編碼。這裏對於原理分析就不進行贅述,直接上動態規劃解法的代碼。package test; import java.util.Ar

原创 單源最短路徑-分支界限法

        單源最短路徑-分支界限法-優先隊列式。這裏使用無迴路的有向圖,便於構建樹。構建好樹後,從根結點作爲起始源,加入結點隊列,然後判斷獲取隊列中最短的路徑結點做爲活結點,將活結點的所有子結點加入隊列,移除活結點。這裏需要注意活結點

原创 單源最短路徑-貪心算法

        單源最短路徑,關於這個問題的貪心算有點不好理解,分析後續補充,代碼也需要後續優化,便於理解package test; import java.util.ArrayList; import java.util.HashMap

原创 裝載問題-分支界限法

        分支界限法解裝載問題和解01揹包問題十分類似,都是建立樹之後廣度優先遍歷各結點,建立隊列,約束條件是第一艘貨船的承載能力,最後選擇承載重量最大的一個組合,然後將剩餘物品全部放在第二艘貨船,判斷是否可以裝下,可以獲得結果。pa

原创 裝載問題-回溯法

        有兩艘貨船,載重分別爲w1、w2,物品總重量不超過載重總量w1+w2,問物品是否都可以裝下。如,w1=w2=10,物品g1=g2=9,g3=2,則無法裝下;w1=w2=5,w3=10,則可以裝下。        這是個典型的