計蒜客 密碼鎖 bfs

2021-10-07 13:55:33 字數 1161 閱讀 2438

題目描述:

現在乙個緊急的任務是開啟乙個密碼鎖。密碼由四位數字組成,每個數字從1到9進行編號。每次可以對任何一位數字加1或減1.當將9加1時,數字變為1,當1減1時,數字變為9.還可以交換相鄰的數字,每乙個行動記做一步。求最少步驟開啟密碼鎖。

輸入格式:

第一行輸入四位數字,表示密碼鎖的初始狀態

第二行輸入四位數字,表示開鎖的密碼。

輸出格式:

輸出乙個整數,即最小步驟數。

樣例輸入:

1234

2144

樣例輸出:

2

解題思路:

廣搜。將鎖的位置看做是四維的乙個座標系。和迷宮的操作依然差不多,這樣就沒有很大的難度了,只不過新增了一些操作。本質上也沒怎麼變化。

ac**:

//密碼鎖 

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace std;

struct node

first,last;

int vis[10]

[10][

10][10

];intbfs()

if(!vis[next.num[0]

][next.num[1]

][next.num[2]

][next.num[3]

])}//-1操作

for(

int i=

0;i<

4;i++)if

(!vis[next.num[0]

][next.num[1]

][next.num[2]

][next.num[3]

])}//交換 ,其實兩邊都交換的話,必然重複,所以這裡可以僅僅和右邊的數交換

for(

int i=

0;i<

3;i++)}

}}intmain()

int ans=

bfs();

cout

}

計蒜客 密碼鎖

樣例輸入 1234 2144 樣例輸出 思路運用bfs對每種序列進行遍歷,每次遍歷乙個序列時,都把它可能擁有的所有狀態都進行選擇,運用map進行標記操作。ac include include include include using namespace std string start,endss...

神奇密碼鎖(BFS)

題目鏈結 題目描述 小明忘記了旅行箱上的密碼,現在他想自己暴力弄出密碼來,但他又想知道最從乙個數字到另乙個數字最少需要多少步,現在請你幫忙。另外,小明的密碼箱很奇怪,只有四位數,上面的數字只有1到9,每次只能讓每位數加1或者減1。按常識我們可以知道從1到9只需要減1,從9到1只需要加1。此外,你還能...

題解 bfs之密碼鎖

題目描述 瑪雅人有一種密碼,如果字串 現連續的2012四個數字就能解開密碼。給乙個長度為n的字串,2 輸入 第一行輸入n,第二行輸入n個數字,只包含0,1,2 輸出樣例輸入 502120 502120 樣例輸出11 每次交換一對,判斷,進棧 include include include inclu...