這兩天看高程中的演算法,把其中的遞迴揹包問題用java執行了。特請高手們指點!
/*
* Created on Apr 2, 2005
*
* To change the template for this generated file go to
* Window - Preferences - Java - Code Generation - Code and Comments
*/
package com.kevin.datastru;
/**
* @author seemee
*
* To change the template for this generated type comment go to
* Window - Preferences - Java - Code Generation - Code and Comments
*/
/*import java.io.BufferedReader;
import java.io.InputStreamReader;*/
import java.io.IOException;
public class CarryBag {
double limitW, totV, maxv;
int option[] = new int[100], cop[] = new int[100];
Struct a[]= new Struct[100];
int n;
public void find(int i, double tw, double tv){
int k;
if ( tw + a.weight <= limitW){
cop=1;
if(i<n-1){
find(i+1, tw+a.weight, tv);
}
else {
for(k=0;k<n;k++){
option[k] = cop[k];
}
maxv = tv;
}
cop = 0;
}
if (tv - a.value > maxv) {
if (i < n-1) {
find(i+1, tw, tv - a.value);
}
else {
for (k = 0; k<n; k++){
option[k] = cop[k];
}
maxv = tv - a.value;
}
}
}
public static void main(String[] args) throws IOException{
int k;
CarryBag cBag = new CarryBag();
cBag.a[0] = cBag.new Struct(5.0, 4.0);
cBag.a[1] = cBag.new Struct (3.0, 4.0);
cBag.a[2] = cBag.new Struct (2.0, 3.0);
cBag.a[3] = cBag.new Struct (1.0, 1.0);
cBag.limitW = 7.0;
cBag.maxv = 0.0;
cBag.totV = 12.0;
cBag.n = 4;
for (k = 0; k < cBag.n ; k++) {
cBag.cop[k] = 0;
}
cBag.find(0, 0.0, cBag.totV);
for(k = 0; k < cBag.n ; k++){
if(cBag.option[k] != 0) {
System.out.println(k);
}
}
System.out.println(cBag.maxv);
}
class Struct{
double weight;
double value;
Struct (double weight, double value){
this.weight = weight;
this.value = value;
}
}
}
以上程式碼複製、貼上即可執行!
* Created on Apr 2, 2005
*
* To change the template for this generated file go to
* Window - Preferences - Java - Code Generation - Code and Comments
*/
package com.kevin.datastru;
/**
* @author seemee
*
* To change the template for this generated type comment go to
* Window - Preferences - Java - Code Generation - Code and Comments
*/
/*import java.io.BufferedReader;
import java.io.InputStreamReader;*/
import java.io.IOException;
public class CarryBag {
double limitW, totV, maxv;
int option[] = new int[100], cop[] = new int[100];
Struct a[]= new Struct[100];
int n;
public void find(int i, double tw, double tv){
int k;
if ( tw + a.weight <= limitW){
cop=1;
if(i<n-1){
find(i+1, tw+a.weight, tv);
}
else {
for(k=0;k<n;k++){
option[k] = cop[k];
}
maxv = tv;
}
cop = 0;
}
if (tv - a.value > maxv) {
if (i < n-1) {
find(i+1, tw, tv - a.value);
}
else {
for (k = 0; k<n; k++){
option[k] = cop[k];
}
maxv = tv - a.value;
}
}
}
public static void main(String[] args) throws IOException{
int k;
CarryBag cBag = new CarryBag();
cBag.a[0] = cBag.new Struct(5.0, 4.0);
cBag.a[1] = cBag.new Struct (3.0, 4.0);
cBag.a[2] = cBag.new Struct (2.0, 3.0);
cBag.a[3] = cBag.new Struct (1.0, 1.0);
cBag.limitW = 7.0;
cBag.maxv = 0.0;
cBag.totV = 12.0;
cBag.n = 4;
for (k = 0; k < cBag.n ; k++) {
cBag.cop[k] = 0;
}
cBag.find(0, 0.0, cBag.totV);
for(k = 0; k < cBag.n ; k++){
if(cBag.option[k] != 0) {
System.out.println(k);
}
}
System.out.println(cBag.maxv);
}
class Struct{
double weight;
double value;
Struct (double weight, double value){
this.weight = weight;
this.value = value;
}
}
}
以上程式碼複製、貼上即可執行!
相關文章
- 揹包問題的遞迴與非遞迴演算法遞迴演算法
- 從【零錢兌換】問題看01揹包和完全揹包問題
- 揹包問題(01揹包與完全揹包)
- 揹包問題
- 你真的懂01揹包問題嗎?01揹包的這幾問你能答出來嗎?
- 二維費用揹包問題
- JavaScript中揹包問題(面試題)JavaScript面試題
- 【演算法】0-1揹包問題演算法
- 請教一個切片遞迴賦值的問題遞迴賦值
- 01揹包問題的解決
- 01揹包問題
- 01 揹包問題
- 01揹包和完全揹包問題解法模板
- Java遞迴演算法的使用Java遞迴演算法
- 揹包問題的一道經典問題
- 樹遞迴問題的求解遞迴
- 揹包九講問題
- 經典揹包問題
- 揹包問題大合集
- 部分揹包問題(挖
- 005多重揹包問題||
- 遞迴問題遞迴
- 程式碼隨想錄演算法訓練營第41天 | 01揹包問題 二維 、 01揹包問題 一維 、 416. 分割等和子集演算法
- 假如我們把函式都改成遞迴...函式遞迴
- 揹包問題例題總結
- Java遞迴演算法Java遞迴演算法
- 2024.10.2 座標變化 + 揹包問題剩下的題
- 01揹包問題理解動態規劃演算法動態規劃演算法
- 【leetcode】揹包問題彙總LeetCode
- 2. 01揹包問題
- Java解決遞迴造成的堆疊溢位問題Java遞迴
- 位元組面試演算法題-0,1揹包問題面試演算法
- 揹包問題解題方法總結
- 51nod 1597 有限揹包計數問題 (揹包 分塊)
- chapter12-2-揹包問題APT
- 關於各種揹包問題
- 【動態規劃】揹包問題動態規劃
- 深入剖析多重揹包問題(上篇)
- 深入剖析多重揹包問題(下篇)