今晚終於把老師發布的演算法題的思路理清楚了,很是開心。
這次的演算法是用佇列式分支限界法解決裝載問題。
下面對於演算法的幾乎每一步都給了詳細解釋。需要的同學可以借鑑一下。嘻嘻。
希望大家一起共同進步呀~
//佇列式分支限界法_貨櫃問題
public class fifobbloding
}//佇列類
private static class arrayqueue
//入隊(迴圈順序隊列入隊)
private static void put(qnode b)
//出隊(迴圈順序佇列出隊)
public qnode remove()
}//判空
public boolean isempty()
}private static void enqueue(int wt,int i,
qnode parent, boolean leftchild)
return; }
//非葉節點,將節點加入到活節點佇列
qnode b=new qnode(parent,leftchild,wt);
queue.put(b); }
public static int maxloading(int w,int c,int xx)
//檢查右兒子結點
if(ew+r>bestw) enqueue(ew,i,e,false);
e=(qnode)queue.remove();//取下一擴充套件結點
if(e==null)
ew=e.weight;}
return bestw;
}public static void main(string args) ;
int w=new int;
system.out.println("最優載重量為"+maxloading(w,120,x));
for(int i=n-1;i>=1;i--)
system.out.println("最優解為:");
for(int i=1;i<=n;i++)//輸出最優解
system.out.print(bestx[i]);
}
裝載問題 BFS(佇列式)分支界限法
bfs即佇列分支界限法 如下 include include include using namespace std typedef struct node node int c 最大裝載重量 int n 裝載個數 int bestw 0 最佳裝載重量 int ew 0 當前裝載重量 int wei...
分支限界法 0 1揹包問題 佇列式
一.分支限界法概述 1 分支限界法就是採用廣度優先的策略,依次搜尋活結點所有的分枝,也就額是所有的相鄰結點。在求最優解時採用乙個限界函式,計算限界函式值,選擇乙個最有利的子節點作為擴充套件結點,使搜尋樹朝著解空間樹上有最優解的分支推進,以便盡快找出乙個最優解。2 常見的兩種分支限界法 先進先出 fi...
回溯法與分支限界法 裝載問題
分支限界法和回溯法都屬於搜尋演算法,但是他們的搜尋策略是不同的。分支限界法 廣度優先搜尋 bfs 剪枝函式,回溯法 深度優先搜尋 dfs 剪枝函式 回溯法 找出滿足約束條件的所有解 分枝限界法 找出滿足約束條件的乙個解或特定意義下的最優解 裝載問題 有兩艘船,載重量分別是c1 c2,n個貨櫃,重量是...