藍橋杯17省賽 C9 青蛙跳 bfs

2021-10-09 01:16:29 字數 1040 閱讀 2330

wwwbbb

其中,w字母表示白色青蛙,b表示黑色青蛙,*表示空杯子。

x星的青蛙很有些癖好,它們只做3個動作之一:

1. 跳到相鄰的空杯子裡。

2. 隔著1只其它的青蛙(隨便什麼顏色)跳到空杯子裡。

3. 隔著2只其它的青蛙(隨便什麼顏色)跳到空杯子裡。

對於上圖的局面,只要1步,就可跳成下圖局面:

www*bbb

本題的任務就是已知初始局面,詢問至少需要幾步,才能跳成另乙個目標局面。

輸入為2行,2個串,表示初始局面和目標局面。

輸出要求為乙個整數,表示至少需要多少步的青蛙跳。

例如:輸入:

wwbb

wwbb

則程式應該輸出:

2再例如,

輸入:wwwbbb

bbbwww

則程式應該輸出:

10我們約定,輸入的串的長度不超過15

笨笨有話說:

我夢見自己是一棵大樹,

青蛙跳躍,

我就發出新的枝條,

春風拂動那第 5 層的新枝,

哦,我已是枝繁葉茂。

思路:最短路徑->bfs

記錄每一次狀態,若出現已經有過的狀態則否決後面出現這個狀態的路線->hashmap

遍歷交換情況的時候,做完對交換後出現的狀態的記錄/判斷後,回滾到之前的狀態,保持下一次交換的時候步數一致->回溯

心得:這題目很迷就,也不說清楚,到底是不是只有乙個空杯

public

class 青蛙跳_bfs_9 if(

!map.

containskey

(tmp)

)swap

(c ,i ,i +j);}

}}}private

static

void

swap

(char

c,int i,

int j)

private

static

void

init()

}

藍橋杯 2017初賽 青蛙跳杯子 bfs

跳到相鄰的空杯子裡。隔著1只其它的青蛙 隨便什麼顏色 跳到空杯子裡。隔著2只其它的青蛙 隨便什麼顏色 跳到空杯子裡。對於上圖的局面,只要1步,就可跳成該局面 www bbb 本題的任務就是已知初始局面,詢問至少需要幾步,才能跳成另乙個目標局面。輸入存在多組測試資料,對於每組測試資料 輸入為2行,2個...

藍橋杯2017初賽 青蛙跳杯子 BFS

題目描述 輸入 輸入存在多組測試資料,對於每組測試資料 輸入為2行,2個串,表示初始局面和目標局面。輸入的串的長度不超過15 輸出 對於每組測試資料 輸出要求為乙個整數,表示至少需要多少步的青蛙跳。樣例輸入 wwbb wwbb www bbb bbb www 樣例輸出 2 10 include in...

雙向BFS 藍橋杯真題 青蛙跳杯子

wwwbbb 其中,w字母表示白色青蛙,b表示黑色青蛙,表示空杯子。x星的青蛙很有些癖好,它們只做3個動作之一 1.跳到相鄰的空杯子裡。2.隔著1只其它的青蛙 隨便什麼顏色 跳到空杯子裡。3.隔著2只其它的青蛙 隨便什麼顏色 跳到空杯子裡。對於上圖的局面,只要1步,就可跳成下圖局面 wwwbbb 本...