題目描述:
現在乙個緊急的任務是開啟乙個密碼鎖。密碼由四位數字組成,每個數字從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...