第7周作业1——背包问题

    对上文中提到的背包问题提供的表1(第一行为背包总重量15,物品数量5;第2-6行,分别为第1-5件物品的重量与价值),W=15,编程计算最终背包所装物品的编号、总重量与总价值。要求能够把构造的二维表格输出到文件KnapsackResult.txt中。

解:

 
 
package week7;

import java.io.*;

public class Backpack {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		
		File file1 = new File("Knapsack.txt");
		File file2 = new File("KnapsackResult.txt");
		int k[][] = new int[6][2];
		int K[][] = new int[16][6];
		String str;
		int tempchar;
		
		try {
			FileReader in = new FileReader(file1);
			BufferedReader bufr = new BufferedReader(in);
			FileWriter fw = new FileWriter(file2);
			BufferedWriter bufw = new BufferedWriter(fw);
			
			str = "";
			int a = 0, b = 0, i = 0;
			while ((tempchar = bufr.read()) != -1) {
				str = str + (char) tempchar;
				if ((char) tempchar == ' ') {
					a = Integer.parseInt(str.trim());
					str = "";
				}
				if ((char) tempchar == '\n') {
					b = Integer.parseInt(str.trim());
					k[i][0] = a;
				    k[i][1] = b;
					str = "";
					i++;
				}
			}
			for(int j = 1; j < 6; j++) {
				for(int w = 1; w < 16; w++) {
					if(k[j][0] > w) {
						K[w][j] = K[w][j-1];
					}
					else if(K[w][j-1] > (K[w-k[j][0]][j-1]+k[j][1])) {
						K[w][j] = K[w][j-1];
					}
					else
						K[w][j] = K[w-k[j][0]][j-1]+k[j][1];
				}
			}
			
			str="";
			tempchar = 32;
			for(int x = 0; x < 16; x++) {
				for(int y = 0; y < 6; y++) {
					System.out.print(K[x][y]+" ");
					str=str+Integer.toString(K[x][y])+(char) tempchar;
					if(y==5){
						bufw.write(str);
						bufw.newLine();
						str="";
					}
				}
				System.out.println();
			}
		
			bufr.close();
			in.close();
			bufw.close();
			fw.close();
		}
		
		catch(Exception e) {
			e.printStackTrace();
		}
			
	}

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯智能台灯

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值