演算法 貪心演算法

2021-10-12 22:09:31 字數 2949 閱讀 9973

問題描述:

解決思路:

**實現思路:

**實現:

public

class

main2

else

system.out.

println

(activity

(n, programs));

}}}public

static

intactivity

(int n,program[

] programs)

}swap

(programs,i,index);}

// 以第1個節目開始,sum為計算,最多可以看幾個節目

int sum =1;

//下標:第1個節目開始,下標為0 ,記錄安排進來的節目下標

int m =0;

for(

int i =

1; i < n; i++)}

return sum;

}/**

* 交換

* @param programs

* @param i,j

*/public

static

void

swap

(program[

] programs,

int i,

int j)

}class

program

問題描述

貪心策略:採用重量最輕者先裝的貪心選擇策略,可產生最優裝載問題的最優解。

**實現:

public

class

main

list

load =

load

(c, maps)

;//輸出船的裝載數量

system.out.

println

(load.

size()

);//輸出貨櫃裝載的順序

for(string integer : load)

system.out.

println()

;}}/**

* * @param c 船裝載的重量

* @param maps 每個貨櫃對應的編號及其重量

* @return list集合,船最多裝載的貨櫃編號

*/public

static list

load

(int c, map

maps)})

; arraylist

arraylist =

newarraylist

<

>()

;//遍歷排好序的map集合

iterator

> iterator = list.

iterator()

;while

(iterator.

hasnext()

)else

}return arraylist;

}}

除了用map集合,還可以定義乙個貨櫃的類,儲存編號和重量兩個屬性。

prim演算法是用來解決最小生成樹minimal spanning trees (mst)問題

任何只由圖g的邊構成,幷包含g的所有頂點的樹稱為g的生成樹

加權無向圖g的生成樹的權重是該生成樹的所有邊的權重之和

最小生成樹是其所有生成樹中權重最小的生成樹

n個頂點,選取n-1條邊,構建乙個連通圖,且這n-1條邊的權重之和最小

例項演示prim演算法構造最小生成樹:

實現思路:

(1) 任意選定一點s,設集合s=

(2) 從不在集合s的點中選出乙個點j使得其與s內的某點i的距離最短,則(i,j)就是生成樹上的一條邊,同時將j點加入s

(3) 轉到(2)繼續進行,直至所有點都己加入s集合

**實現:

public

class

prim

}while

(scanner.

hasnextint()

)prim

(n,g);}

/** *

* @param n 點數

* @param g 儲存圖

*/public

static

void

prim

(int n,

int[

] g)

//訪問第1個點(0),將第1個點加到s中

used[0]

=1;//每一次迴圈找出乙個到s距離最近的頂點

for(

int i =

1; i < n; i++)}

//輸出s中與j最近鄰點,j,以及它們之間的距離

system.out.

println

(closeset[j]

+" "

+j+" "

+lowcost[j]);

//將j增加到s中

used[j]=1

;for

(int k =

0; k < n; k++)}}}}

# 輸入

0 1 28

0 5 10

5 4 25

4 3 22

3 2 12

2 1 16

1 6 14

6 4 24

6 3 18

aa #結束輸入

#輸出0 5 10

5 4 25

4 3 22

3 2 12

2 1 16

1 6 14

演算法 貪心演算法

把乙個複雜問題分解為一系列較為簡單的區域性最優選擇,每乙個選擇都是對當前解的乙個擴充套件,知道獲得問題的完整解。在解決問題的策略上目光短淺,只根據當前已有的資訊做出選擇,而且一旦做出了選擇,不管將來有什麼結果這個選擇都不會改變。換言之,貪心法並不是從整體最優考慮,它所做出的選擇只是在某種意義上的區域...

演算法 貪心演算法

集合覆蓋問題 旅行商問題等都屬於np完全問題,在數學領域上並沒有快速得到最優解的方案,非常適合用貪婪演算法。判斷方法 1.元素較少時,一般執行速度很快,但隨著元素數量增多,速度會變得非常慢 2.涉及到需要計算比較 所有的組合 情況的通常是np完全問題 3.無法分割成小問題,必須考慮各種可能的情況。這...

演算法 貪心演算法

貪心演算法,又稱貪婪演算法 greedy algorithm 是指在對問題求解時,總是做出在當前看來是最好的選擇。也就是說,不從整體最優解出發來考慮,它所做出的僅是在某種意義上的區域性最優解。貪婪演算法是一種分階段的工作,在每乙個階段,可以認為所做決定是最好的,而不考慮將來的後果。這種 眼下能夠拿到...