牛客網 瑪雅人的密碼 BFS

2021-10-05 17:16:05 字數 661 閱讀 3833

題目描述

瑪雅人有一種密碼,如果字串**現連續的2012四個數字就能解開密碼。給乙個長度為n的字串,(2=本題可以利用bfs來查詢每種狀態即可,也就是當乙個字串通過兩兩交換之後可以變成好幾種字串,那麼將不同的字串存入佇列進行bfs,如果符合條件(存在2012)即可,同時可以用map來儲存其層次,如果這個字串已經出現過了,那麼就沒有必要再入隊了

#include

#include

#include

using

namespace std;

bool

check

(string str)

return

true;}

intmain()

elseif(

check

(str)

)int ans=-1

; mapint> m;

m[str]=0

;//初始

queue q;

q.push

(str)

;while

(!q.

empty()

)for

(int i=

1;icout<}return0;

}

瑪雅人的密碼bfs

如何用佇列廣度優先遍歷所有可能性 queue 如何判別並標示某串是否訪問過 map 如何記錄某串已經交換字元的次數 子串2012是否存在 include include include include include include using namespace std int count 3 t...

BFS 瑪雅人的密碼

時間限制 1秒 空間限制 65536k 熱度指數 5412 瑪雅人有一種密碼,如果字串 現連續的2012四個數字就能解開密碼。給乙個長度為n的字串,2 示例1 1.典型的bfs題目,節點為字串 2.巧妙地運用map來判斷搜尋樹中是否有重複的節點 3.s.find 2012 string npos 匹...

瑪雅人的密碼 BFS

瑪雅人有一種密碼,如果字串 現連續的2012四個數字就能解開密碼。給乙個長度為n的字串,2 輸入包含多組測試資料,每組測試資料由兩行組成。第一行為乙個整數n,代表字串的長度 2 n 13 第二行為乙個僅由0 1 2組成的,長度為n的字串。對於每組測試資料,若可以解出密碼,輸出最少的移位次數 否則輸出...