1、实验七 回溯算法(2 学时)一、实验目的与要求1、掌握装载问题的回溯算法;2、初步掌握回溯算法;二、实验内容有一批共 n 个集装箱要装上 2 艘载重量分别为 c1 和 c2 的轮船,其中集装箱 i 的重量为wi,且 装载问题要求确定是否有一个合理的装载方案可将这个集装箱装上这 2 艘轮船。如果有,找出一种装载方案。三、实验步骤及程序代码package unit1;import java.util.Scanner;public class Backtrack static int n;/集装箱数static int w;/集装箱重量数组static int c;/第一艘轮船的载重量static
2、int cw;/当前载重量static int bestw;/当前最优载重量static int r;/剩余集装箱重量static int x;/当前解static int bestx;/当前最优解public static int maxLoading(intww,int cc,intxx)n=ww.length-1;w=ww;c=cc;bestw=0;x=new int n+1;bestx=xx;for(int i=0;in)/到达叶结点if(cwbestw)for(int j=0;jbestw)xi=0;backtrack(i+1);r+=wi;public static void ma
3、in(String args) Scanner in=new Scanner(System.in);System.out.println(“请输入集装箱的数目:“);int p =in.nextInt();int ww=new intp;System.out.println(“请输入各集装箱的重量: “);for(int i=0;iww.length;i+) wwi=in.nextInt();System.out.println(“请输入第一艘轮船的载重量: “);int cc=in.nextInt();int xx=new intww.length;maxLoading(ww,cc,xx); System.out.print(“输出当前最优解:“);for(int i = 0;iw.length;i+)System.out.print(xxi+“ “);/System.out.print(“n“);System.out.println(“当前最优载重量为:“ +bestw);四、实验结果五、实验心得体会1、通过本次实验使我掌握装载问题的回溯算法;2、更加熟悉回溯算法;3、提高了我对编程的浓厚兴趣,更加增强了自己学习算法的信心