程式碎片 分油問題 bfs

2021-05-17 18:31:58 字數 1986 閱讀 6295

這個問題是看演算法精華版時候看見的,人家的演算法看了很頭大,自己寫一遍後覺得清楚多了

using

system;

using

system.collections.generic;

using

system.linq;

using

system.text;

using

system.windows.forms;

/* * 分油演算法:乙個桶中有

12斤油,要求倒出

6斤,可現在另外只有兩個桶,分別可裝8斤與

5斤,請問應如何來倒?

* 補充:這裡的

12,6,8,5

都是變數,應該可以自己設定,輸出是每一次分油的步驟。

* * bfs

廣度優先搜尋,把探索到的狀態放在臨時表裡,看是否探索又回到了原來的位置。

* *

* */

namespace

zbosorting.test.csdn

private

list

bottlelist = new

list

();private

list

bottletotalstatus = new

list

();private

bottle bottle1 = new

bottle () ;

private

bottle bottle2 = new

bottle () ;

private

bottle bottle3 = new

bottle () ;

public separateoil() ;

bottlelist.addrange(bottlearray);

this .targetoil = 6;

bottletotalstatus.add(new

status () ); }

public

void run()

} }

fromstatus.insearch = false ;

searchstatuslist = bottletotalstatus.findall(status => status.insearch == true ); }

} private

void resetbottles(status fromstatus)

private

void dumpoil(bottle frombottle, bottle tobottle, status fromstatus) ;

if (

bottletotalstatus.find(

s => (s.oilin12 == status.oilin12 && s.oilin5 == status.oilin5 && s.oilin8 == status.oilin8)) ==

null )

}else

} }

private

list

getpossibleto()

return possibleto; }

private

list

getpossiblefrom()

return possiblefrom; }

internal

class

bottle

public

int currentoil }

internal

class

status

public

int oilin8

public

int oilin5

public

status fromstatus

public

bool insearch = false ; }

} }

用寬度優先搜尋(BFS)解決分油問題

選了李翠華老師的計算智慧型課程,第一次作業是解決乙個小孩分油問題,把實驗報告和 上傳,留底。1.問題描述 編寫乙個程式,解決下列問題 小孩分油問題 兩個小孩去打油,一人帶了乙個一斤的空瓶,另乙個帶了乙個七兩 乙個三兩的空瓶。原計畫各打一斤油,可是由於所帶的錢不夠,只好兩人合打了一斤油,在回家的路上,...

小孩分油問題

1.問題描述 兩個小孩去打油,一人帶了乙個一斤的空瓶,另乙個帶了乙個七兩 乙個三兩的空瓶。原計畫各打一斤油,可是由於所帶的錢不夠,只好兩人合打了一斤油,在回家的路上,兩人想平分這一斤油,可是又沒有其它工具,試僅用三個瓶子 一斤 七兩 三兩 精確地分成兩個半斤油來。2.演算法設計 假設狀態a x1,x...

最優程式問題(BFS)

輸入兩個整數n1,n2.用 最少的四則運算從n1得到n2.例如 輸入2,5,則 2 2 1,1 2 3,3 2 5.運算結果為 div,add,add.好吧我偷懶把題目簡化了。因為運算步驟可能無限長,本題的解答樹是無限大的,此題不能用回溯來解。本題要求最短過程,利用寬度優先遍歷解答樹。int n1,...