BFS 巧妙取量

2021-09-21 02:25:06 字數 1483 閱讀 2731

【題目描述】

有三個容器,容量分別為 a,b,c(a> b > c ),一開始a裝滿油,現在問是否只靠abc三個容器量出k公升油。如果能就輸出「yes」,並且說明最少倒幾次,否則輸出「no」。例如:10公升油在10公升的容器中,另有兩個7公升和3公升的空容器,要求用這三個容器倒油,使得最後在abc三個容器中有乙個剛好存有5公升油,問最少的倒油次數是多少?(每次倒油,a容器倒到b容器,或者a內的油倒完,或者b容器倒滿。

10 7 3

(10 0 0)

(3 7 0):第一次

(3 4 3):第二次

(6 4 0):第三次

(6 1 3):第四次

(9 1 0):第五次

(9 0 1):第六次

(2 7 1):第七次

(2 5 3):第八次,出現5了。

input

【輸入格式】

有多組測試資料。

輸入a,b,c, k四個正整數( 100 ≥ a > b > c≥1 , 1≤k< 100 )

output

【輸出格式】

如果能得到k就輸出兩行。

第一行「yes」,第二行為最少的次數

否則輸出「no」

sample input

10 7 3 5

sample output

yes8

一直wa。。欸。。之後再看看吧。先放著。

#include

#include

using

namespace std;

struct node

start;

int a[3]

;queue q;

bool has =

false

;int m[

101]

[101][

101]=;

//用來判斷某個狀態是否已經存在了

int k;

void

bfs(

)for

(int i =

0; i <

3; i++

)else

//i會變成空

if(m[temp.num[0]

][temp.num[1]

][temp.num[2]

]==0)

}}}}

}int

main()

cin >> k;

start.num[0]

= a[0]

; start.num[1]

= start.num[2]

=0; start.step =0;

m[a[0]

][0]

[0]=

1;q.

push

(start)

;bfs()

;if(!has)

return0;

}

問題 E 寬搜入門 巧妙取量

題目描述 有三個容器,容量分別為 a,b,c a b c 一開始a裝滿油,現在問是否只靠abc三個容器量出k公升油。如果能就輸出 yes 並且說明最少倒幾次,否則輸出 no 例如 10公升油在10公升的容器中,另有兩個7公升和3公升的空容器,要求用這三個容器倒油,使得最後在abc三個容器中有乙個剛好...

bfs 很巧妙的乙個記錄路徑方式!!

總時間限制 1000ms 記憶體限制 65536kb 描述 佐助被大蛇丸誘騙走了,鳴人在多少時間內能追上他呢?已知一張地圖 以二維矩陣的形式表示 以及佐助和鳴人的位置。地圖上的每個位置都可以走到,只不過有些位置上有大蛇丸的手下,需要先打敗大蛇丸的手下才能到這些位置。鳴人有一定數量的查克拉,每乙個單位...

量取牛奶codevs2094

題目描述 description 農夫約翰要量取 q 1 q 20,000 夸脫 夸脫,quarts,容積單位 譯者注 他的最好的牛奶,並把它裝入乙個大瓶子中賣出。消費者要多少,他就給多少,從不有任何誤差。農夫約翰總是很節約。他現在在奶牛五金商店購買一些桶,用來從他的巨大的牛奶池中量出 q 夸脫的牛...