sloves:
package BackPack;
public class Solves {
 public int[] DecimaltoBinary(int n,int m)
 {
  int r;//求余数
  int consult=1;//求商
  int j = 0;
  int []arr=new int[m];
  while (consult!=0)
  {
   consult = n / 2;
   r = n % 2;
   n = consult;
   arr[j] = r;
   j++;
  }
  return arr;
 }
 /**
  * 将求得的一位数组子集转换为二维数组
  * @param m
  * @return
  */
 public int[][] Subset(int m)
 {
  Solves s=new Solves();
  int subset[][]=new int[(int) Math.pow(2, m)][m];
  for (int i = 0; i <Math.pow(2, m); i++)
  {
   for (int j =0; j<m; j++)
   {
    subset[i][j]=s.DecimaltoBinary(i,m)[j];
   }
  }
    return subset;
 
 }
 public int MaxValue(int arr[])
 {
   int max = arr[0];
      for (int in = 0 ; in < arr.length; in++)
         {
           if( arr[in] > max)
           {
            max = arr[in];
           }
          }
  return max;
 
 }
}
 
demo:
package BackPack;
import java.util.Scanner;
public class Demo {
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  int m;//物品的数量
  int capacity;//背包的容量
  int wb=0;//初始化背包的质量
  int vb=0;//初始化背包的价值
  Solves s=new Solves();
     Scanner sc=new Scanner(System.in);
     System.out.print("请输入物品的数量:");
     m=sc.nextInt();
     System.out.print("请输入背包的容量:");
     capacity=sc.nextInt();
     int weight[]=new int[m];//用来记录每个物品的重量
     int value[]=new int[m];//用来记录每个物品的价值
     for(int i=0;i<m;i++)
     {
      System.out.print("请输入物品"+i+"的重量:");
      weight[i]=sc.nextInt();
      System.out.print("请输入物品"+i+"的价值:");
      value[i]=sc.nextInt();
     }
     int MaxValue[]=new int[(int)Math.pow(2, m)];
     System.out.println("各个方案如下:");
     for (int i = 0; i <Math.pow(2, m); i++)
  {
   for (int j =0; j<m; j++)
   {
       if(s.Subset(m)[i][j]==1)
       {
        wb+=weight[j]*s.Subset(m)[i][j];
        vb+=value[j];
        System.out.print("物品:"+j+"");
       }
   }
 
   
   if(wb<=capacity)
   {
    MaxValue[i]=wb;
      System.out.println("------"+"方案"+i+":总价值为:"+vb+" "+"总重量为:"+wb);
   }
   else
   {
     System.out.println("------"+"方案"+i+":超出背包容量!");
   }
   
   wb=0;
   vb=0;
  }
    System.out.println("背包可装入的最大容量为:"+s.MaxValue(MaxValue));
 }
}
  

0-1背包问题蛮力法求解(java版本)的更多相关文章

  1. 0-1背包问题蛮力法求解(c++版本)

    // 0.1背包求解.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream>   #define ...

  2. 0-1背包问题——回溯法求解【Python】

    回溯法求解0-1背包问题: 问题:背包大小 w,物品个数 n,每个物品的重量与价值分别对应 w[i] 与 v[i],求放入背包中物品的总价值最大. 回溯法核心:能进则进,进不了则换,换不了则退.(按照 ...

  3. Java实现动态规划法求解0/1背包问题

    摘要: 使用动态规划法求解0/1背包问题. 难度: 初级 0/1背包问题的动态规划法求解,前人之述备矣,这里所做的工作,不过是自己根据理解实现了一遍,主要目的还是锻炼思维和编程能力,同时,也是为了增进 ...

  4. 经典递归问题:0,1背包问题 kmp 用遗传算法来解背包问题,hash表,位图法搜索,最长公共子序列

    0,1背包问题:我写笔记风格就是想到哪里写哪里,有很多是旧的也没删除,代码内部可能有很多重复的东西,但是保证能运行出最后效果 '''学点高大上的遗传算法''' '''首先是Np问题的定义: npc:多 ...

  5. linux ubuntu下如何安装并且切换java版本(Unsupported major.minor version 52.0)

    最近在做一个dcos(数据中心操作系统)的东西,需要用marathon来做进程管理.遗憾的是0.6版本的marathon在API方面很是缺少,换成了0.15版本之后,运行时提示“Unsupported ...

  6. 蓝桥杯 0/1背包问题 (java)

      今天第一次接触了0/1背包问题,总结一下,方便以后修改.不对的地方还请大家不啬赐教! 上一个蓝桥杯的例题: 数据规模和约定 代码: import java.util.Scanner; public ...

  7. 复利计算5.0(改成Java版本)与 单元测试

    //由于C语言版本不方便单元测试,所以改成了java版本,部分代码如下:import java.util.Scanner; public class FuLi{ public static void ...

  8. Java版本:识别Json字符串并分隔成Map集合

    前言: 最近又看了点Java的知识,于是想着把CYQ.Data V5迁移到Java版本. 过程发现坑很多,理论上看大部分很相似,实践上代码写起来发现大部分都要重新思考方案. 遇到的C#转Java的一些 ...

  9. 你的程序支持复杂的时间调度嘛?如约而来的 java 版本

    你的程序支持复杂的时间调度嘛? 这篇文章介绍了时间适配器的c#版本,是给客户端用的,服务器自然也要有一套对应的做法,java版本的 [年][月][日][星期][时间] [*][*][*][*][*] ...

随机推荐

  1. 如何一步一步用DDD设计一个电商网站(六)—— 给购物车加点料,集成售价上下文

    阅读目录 前言 如何在一个项目中实现多个上下文的业务 售价上下文与购买上下文的集成 结语 一.前言 前几篇已经实现了一个最简单的购买过程,这次开始往这个过程中增加一些东西.比如促销.会员价等,在我们的 ...

  2. 如何一步一步用DDD设计一个电商网站(四)—— 把商品卖给用户

    阅读目录 前言 怎么卖 领域服务的使用 回到现实 结语 一.前言 上篇中我们讲述了“把商品卖给用户”中的商品和用户的初步设计.现在把剩余的“卖”这个动作给做了.这里提醒一下,正常情况下,我们的每一步业 ...

  3. ASP.NET MVC5+EF6+EasyUI 后台管理系统 (源码购买说明)

    系列目录 升级日志 !!!重大版本更新:于2016-12-20日完成了系统的结构重构并合并简化了T4(这是一次重要的更新,不需要修改现有功能的代码),代码总行数比上个版本又少了1/3.更新了代码生成器 ...

  4. 关于python的bottle框架跨域请求报错问题的处理

    在用python的bottle框架开发时,前端使用ajax跨域访问时,js代码老是进入不了success,而是进入了error,而返回的状态却是200.url直接在浏览器访问也是正常的,浏览器按F12 ...

  5. 用WebRequest +HtmlAgilityPack 从外网抓取数据到本地

    相信大家对于WebRequest 并不陌生,我们在C#中发请求的方式,就是创建一个WebRequest .那么如果我们想发一个请求到外网,比如国内上不了的一些网站,那么该怎么做呢? 其实WebRequ ...

  6. Android实现TCP断点上传,后台C#服务实现接收

    终端实现大文件上传一直都是比较难的技术,其中涉及到后端与前端的交互,稳定性和流量大小,而且实现原理每个人都有自己的想法,后端主流用的比较多的是Http来实现,因为大多实现过断点下载.但稳定性不能保证, ...

  7. WPF 捕获键盘输入事件

    最近修改的一个需求要求捕获键盘输入的 Text,包括各种标点符号. 最开始想到的是 PreviewKeyDown 或者 PreviewKeyUp 这样的键盘事件. 但是这两个事件的对象 KeyEven ...

  8. 水平可见直线 bzoj 1007

    水平可见直线 (1s 128M) lines [问题描述] 在xoy直角坐标平面上有n条直线L1,L2,...Ln,若在y值为正无穷大处往下看,能见到Li的某个子线段,则称Li为可见的,否则Li为被覆 ...

  9. SMBus set up a 2-byte EEPROM address for read/write

    Sequencer Engine spec: http://www.analog.com/media/en/technical-documentation/data-sheets/ADM1260.pd ...

  10. Atitit  godaddy 文件权限 root权限设置

    Atitit  godaddy 文件权限 root权限设置 1. ubuntu需要先登录,再su切换到root1 2. sudo 授权许可使用的su,也是受限制的su1 3. ubuntu默认吗roo ...