貪婪演算法 裝箱問題

2021-08-27 14:20:12 字數 1408 閱讀 8067

貪婪演算法求出的最終解不一定是最優解

儲存形式:鍊錶

型別宣告

1.排序物品體積時物品的型別

typedef

struct

elemg;

2.裝箱時物品的型別
typedef

struct nodegoodslink;

3.箱子節點
typedef

struct boxebox;

elemg*

init_goods()

;//物品的體積

elemg *g;

g =(elemg *

)malloc

((n)

*sizeof

(elemg));

//儲存物品的陣列

for(

int i=

0;i)return g;

}

2.把所有物品體積按照降序的順序排序

//將儲存物品的進行降序排序 (使用快排)

void

goodssort

(elemg *g,

int left,

int right)

else

while

(base <= g[i]

.gv && i

if(i < j)

} temp = g[left]

; g[left]

= g[i]

; g[i]

= temp;

goodssort

(g,left,i-1)

;goodssort

(g,i+

1,right);}

}

3.裝箱

ebox*

load

(elemg* g)

else

}else

a->link = gl;}}

return hbox;

}

4.輸出

//輸出 

void

print

(ebox* hbox)

printf

("\n");

p = p->next;

}}

貪婪演算法實現裝箱

貪婪演算法實現裝箱操作 public class test 裝箱函式 public void putthehuowu huowu h int num 1 box box null for int i 0 i h.length i boolean isok false box currentbox b...

演算法訓練 裝箱問題

問題描述 有乙個箱子容量為v 正整數,0 v 20000 同時有n個物品 0 n 30 每個物品有乙個體積 正整數 要求n個物品中,任取若干個裝入箱內,使箱子的剩餘空間為最小。輸入格式 第一行為乙個整數,表示箱子容量 第二行為乙個整數,表示有n個物品 接下來n行,每行乙個整數表示這n個物品的各自體積...

演算法訓練 裝箱問題

問題描述 有乙個箱子容量為v 正整數,0 v 20000 同時有n個物品 0 n 30 每個物品有乙個體積 正整數 要求n個物品中,任取若干個裝入箱內,使箱子的剩餘空間為最小。輸入格式 第一行為乙個整數,表示箱子容量 第二行為乙個整數,表示有n個物品 接下來n行,每行乙個整數表示這n個物品的各自體積...