瑪雅人的密碼

2021-10-04 07:21:37 字數 755 閱讀 6080

瑪雅人有一種密碼,如果字串**現連續的2012四個數字就能解開密碼。給乙個長度為n的字串,(2=示例1

複製

5

02120

複製

1
思路: 自己用dfs寫的只過了60%,看了看題解是用bfs 做的,真香! 首先將字串 str 看做根節點,交換一次的字串作為第二層,以此類推,直到出現有 "2012"的字串,那麼它的深度就是交換次數。

#include #include #include #include using namespace std;

queueq ;

mapm ;

int n ;

string str ;

string swap(string s,int i )

bool check1(string str )

else if(str.find("2")== string::npos)

return false ;

}int bfs(string str)

q.push(str) ;

m[str] = 0 ;

while(!q.empty())

else }}

}return -1 ;

}int main()

else if(check1(str))

else

else }}

return 0 ;

}

瑪雅人的密碼

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

瑪雅人的密碼

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

瑪雅人的密碼bfs

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