藍橋杯歷屆試題 青蛙跳杯子

2021-08-17 17:14:43 字數 1650 閱讀 2268

歷屆試題 青蛙跳杯子  

時間限制:1.0s   記憶體限制:256.0mb

問題描述

x星球的流行寵物是青蛙,一般有兩種顏色:白色和黑色。

如下圖,有一排杯子,左邊的乙個是空著的,右邊的杯子,每個裡邊有乙隻青蛙。

*wwwbbb

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

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

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

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

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

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

www*bbb

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

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

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

樣例輸入

*wwbb

wwbb*

樣例輸出 2

樣例輸入

www*bbb

bbb*www

樣例輸出

10資料規模和約定

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

資源約定:

峰值記憶體消耗(含虛擬機器) < 256m

cpu消耗 < 1000ms

請嚴格按要求輸出,不要畫蛇添足地列印類似:「請您輸入...」 的多餘內容。

所有**放在同乙個原始檔中,除錯通過後,拷貝提交該原始碼。

不要使用package語句。不要使用jdk1.7及以上版本的特性。

主類的名字必須是:main,否則按無效**處理。

----------------------------

笨笨有話說:

我夢見自己是一棵大樹,

青蛙跳躍,

我就發出新的枝條,

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

哦,我已是枝繁葉茂。

這題我用的是廣搜,想了小半天,終於出來了,但是提交的時候還是有兩個資料超時

下面是我的思路:

從當前空杯子處找所有可能的跳法,並將每種可能一一入隊,例如有7個杯子,中間的是空杯子,則有6種可能跳法

其他情況以此類推。

每次用過的串用乙個新的陣列存起來,避免重複使用,浪費時間。每次用時比對一下看其是否用過,如果用過則不用。

當找到目標串就ok了。

下面上**

#include#includechar start[16];

char aim[16];

int length;

int map[100000]=;

typedef struct nodequeue;

queue ss[100000];//新陣列 存放已經使用過的串

int slen=0; //新陣列長度

int ok(char mid) //判斷是否找到目標串

if(id+1=0)

if(id+2=0)

if(id+3} strcpy(ss[slen++].mid,mid); //用過了就存入新陣列 }}

int main()

for(i=0;ibfs(mid,emptyid);

return 0;

}

藍橋杯 歷屆試題 青蛙跳杯子 c

青蛙跳杯子 時間限制 1.0s 記憶體限制 256.0mb wwwbbb 其中,w字母表示白色青蛙,b表示黑色青蛙,表示空杯子。x星的青蛙很有些癖好,它們只做3個動作之一 1.跳到相鄰的空杯子裡。2.隔著1只其它的青蛙 隨便什麼顏色 跳到空杯子裡。3.隔著2只其它的青蛙 隨便什麼顏色 跳到空杯子裡。...

藍橋杯 歷屆試題 青蛙跳杯子(C )

www bbb 本題的任務就是已知初始局面,詢問至少需要幾步,才能跳成另乙個目標局面。輸入為2行,2個串,表示初始局面和目標局面。輸出要求為乙個整數,表示至少需要多少步的青蛙跳。樣例輸入 wwbb wwbb 樣例輸出 2樣例輸入 www bbb bbb www 樣例輸出 10廣搜,思路 借鑑 歷屆試...

歷屆試題 青蛙跳杯子

問題描述 x星球的流行寵物是青蛙,一般有兩種顏色 白色和黑色。如下圖,有一排杯子,左邊的乙個是空著的,右邊的杯子,每個裡邊有乙隻青蛙。wwwbbb 其中,w字母表示白色青蛙,b表示黑色青蛙,表示空杯子。x星的青蛙很有些癖好,它們只做3個動作之一 1.跳到相鄰的空杯子裡。2.隔著1只其它的青蛙 隨便什...