歷屆試題 青蛙跳杯子
時間限制: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只其它的青蛙 隨便什...