最小重量机器设计问题 java实现
来源:互联网 发布:ybi金融互助平台源码 编辑:程序博客网 时间:2024/06/08 18:33
暂时保存,有待改进
- import java.util.*;
- public class TestMachine {
- public static void main(String[] args) {
- MinMachine mm = new MinMachine(); //最小重量机的对象
- mm.backTrack(0); //计算所有要得到的值
- System.out.println(mm.getBestW()); //打印最小重量
- int[] x = mm.getBestX();
- for(int i=0; i<x.length; i++) { //输出最优解
- System.out.print(x[i]+" ");
- }
- }
- }
- class MinMachine {
- int parts; //机器部件数
- int suppliers; //供应商数目
- float[][] price; //机器的价格
- float[][] weight; //机器的重量
- float cost; //限制的费用
- float currentCost; //当前的花费
- float currentWeight; //当前的重量
- static float bestW; //当前最小重量
- static int bestX[]; //最优解
- static int saveX[]; //保存记录
- public MinMachine() {
- bestW = 0; //开始或者限制费用太小结果为0
- currentWeight = 0;
- currentCost = 0;
- Scanner sc = new Scanner(System.in);
- cost = sc.nextFloat(); //输入要限制的费用
- parts = sc.nextInt(); //为机器部件数赋值
- suppliers = sc.nextInt(); //为供应商数赋值
- price = new float[parts][suppliers];
- weight = new float[parts][suppliers];
- for(int i=0; i<parts; i++) {
- for(int j=0; j<suppliers; j++) {
- price[i][j] = sc.nextFloat(); //机器部件的价格
- weight[i][j] = sc.nextFloat(); //机器部件的重量
- }
- }
- bestX = new int[parts];
- saveX = new int[parts];
- for(int k=0; k<parts; k++) {
- bestX[k] = -1;
- }
- }
- void backTrack(int i) {
- if(i >= parts) { //达到叶子节点
- if(currentWeight<bestW || bestW==0) { /*当前能找到的最小重量<以前最小重量
- 保留当前的最小重量*/
- bestW = currentWeight;
- for(int k=0; k<parts; k++) { //把当前搜过的路径记下来
- saveX[k] = bestX[k];
- }
- }
- return;
- }
- for(int j=0; j<suppliers; j++) { //依次递归尝试这些供应商
- if((currentCost+price[i][j]<cost) && (weight[i][j]>0)) {
- currentCost += price[i][j];
- currentWeight += weight[i][j];
- bestX[i] = j;
- backTrack(i+1);
- bestX[i] = -1;
- currentCost -= price[i][j];
- currentWeight -= weight[i][j];
- }
- }
- }
- float getBestW() { //获取最优重量
- return bestW;
- }
- int[] getBestX() { //获取最优解
- return bestX;
- }
- int[] getSaveX() { //获取记录的解
- return saveX;
- }
- }
- 最小重量机器设计问题 java实现
- 最小重量机器设计问题
- 最小重量机器设计问题
- 最小重量机器设计问题
- 最小重量机器设计问题
- 最小重量机器设计问题
- 最小机器重量设计问题
- 最小重量机器设计问题
- 最小重量机器设计问题
- 最小重量机器设计问题
- 最小重量机器设计问题
- 最小重量机器设计问题
- 最小重量机器设计问题
- SDIBTOJ1350-最小重量机器设计问题
- SDIBT 1350 最小重量机器设计问题
- 回顾下最小重量机器设计问题
- 算法 最小重量机器设计问题
- 最小重量机器设计问题 回溯法
- 一点杂记
- [Ext入门]图文详解Ext常见开发工具的安装使用(转)
- EL表达式详解
- 面向对象的基础 2 摘抄笔记 封装性(重点)
- 昨天,今天,明天
- 最小重量机器设计问题 java实现
- ARM ADS中的AXD 调试经验集锦
- 呵呵
- 齐鲁软件大赛题目-五.学习型创意网游
- 绘图笔记
- 十年之后我是谁
- JDBC高级应用
- 但决赛了此刻撒娇哦
- Log4j,装箱拆箱,反射