演算法設計與應用基礎 第十六周(1)

2021-08-02 06:21:15 字數 826 閱讀 2169

最大流最小割的c++實現

演算法說明:通過上課老師的講解結合自己的看書理解和上網查詢資料,用c++實現了網路流中最大流的求解(ek)演算法,其中每次搜尋是否有增廣路用bfs搜尋以提高效率,維護兩個陣列pre和flow(其作用在**中有注釋),每次找到一條增廣路後修改殘留網路的流量值,**如下

#include#include#include#include#include#includeusing namespace std;

#define arraysize 8

int maxdata=1000000;

int capacity[arraysize][arraysize]; //記錄殘留網路的容量

int flow[arraysize]; //標記從源點到當前節點最多可以流入的流量(目前自己的理解是利用動態規劃最後得到本次bfs路徑流入des的流 量,flow[des]

int pre[arraysize]; //標記當前最短路勁上下標節點的前驅以及該節點是否在路徑中(記錄每一次bfs過程中的最短路徑)

int n,m;

queuenow_load; //進行bfs

int bfs(int source,int des)}}

if(pre[des]==-1)

return -1;

else

return flow[des];

}int maxflow(int source,int des)

sumflow+=more;

}return sumflow;

}int main()

cout<

演算法分析與設計第十六周

分析 每次移除乙個數,要盡可能使前面的數最小,因為前面的數的權值最大。而刪除乙個數,會導致後面緊接著的乙個數代替刪除的數的位置。所以在一次移除操作中,從前往後檢查,一旦發現某個數後繼的數更小,則刪除此數。複雜度為o k n 可以採用遞迴的方法實現。然而遞迴 leetcode顯示記憶體超出,應該是棧溢...

第十六周專案1

檔名稱 1.cpp 完成日期 2016年9月12日 版本號 v1.0 1 氣泡排序 include define maxsize 20 typedef int keytype 定義關鍵字型別 typedef char infotype 10 typedef struct 記錄型別 rectype 排...

第十六周 專案1 驗證演算法

檔名稱 main.cpp,btree.h,btree.cpp 完成日期 2015年12月14日 版本號 code block 12.11 問題描述 程式,觀察執行結果並深刻領會演算法的思路和實現方法 2 希爾排序 測試 include define maxsize 20 typedef int ke...