技术算法关于我写了个装载问题的野鸡算法的那档事
Kitholt Frank由于原来的(书上的)算法我实在是看不懂…所以我想仿照我之前解决全排列的思路(逐个选择法)解决这个问题

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| import java.util.Arrays;
public class Loading {
static int[] w={5,2,1,3}; int n=4,c1=10,cw=0,bestw=0; static int[] isVisit=new int[w.length];
public static int loading(int c1,int[] w,int cw,int bestw,int[] isVisit,int index){ for(int i=index;i<w.length;i++) { if (isVisit[i]!=1&&(cw+w[i]<=c1)){ isVisit[i]=1; cw+=w[i]; if(cw>bestw){ bestw=cw; System.out.println(Arrays.toString(isVisit)); } else{ return bestw; } bestw=loading(c1,w,cw,bestw,isVisit,index+1); cw-=w[i]; isVisit[i]=0;
} } return bestw; }
public static void main(String[] args) { int[] w={5,2,1,3}; int c1=10,cw=0,bestw=0; int[] container=new int[w.length]; int bw= Loading.loading(c1,w,cw,bestw,isVisit,0); System.out.println("第一艘货船最多能载的货物重量为"+bw); System.out.println("其中最后一种装载方案是最优的..."); } }
|
最后的结果截图(也是这段代码最大的问题…虽然结果对了)
