例題四 特殊密碼鎖
描述有一種特殊的二進位制密碼鎖,由n個相連的按鈕組成(n<30),按鈕有凹/凸兩種狀態,用手按按鈕會改變其狀態。
然而讓人頭疼的是,當你按乙個按鈕時,跟它相鄰的兩個按鈕狀態也會反轉。當然,如果你按的是最左或者最右邊的按鈕,該按鈕只會影響到跟它相鄰的乙個按鈕。
當前密碼鎖狀態已知,需要解決的問題是,你至少需要按多少次按鈕,才能將密碼鎖轉變為所期望的目標狀態。
輸入兩行,給出兩個由0、1組成的等長字串,表示當前/目標密碼鎖狀態,其中0代表凹,1代表凸。
輸出至少需要進行的按按鈕操作次數,如果無法實現轉變,則輸出impossible。
樣例輸入
011
000
樣例輸出1
**實現#include
#include
#include
using
namespace std;
string temp;
void
setbit
(int
& c,
int i,
int v)
intgetbit
(int c,
int i)
void
flipbit
(int
& c,
int i)
intin()
voidf(
)setbit
(switches, j +1,
getbit
(from, j)
!=getbit
(to,j));
}if(from == to)
cout << num;
sign =1;
break;}
}if(sign ==
0)cout <<
"impossible";}
intmain()
特殊密碼鎖
有一種特殊的二進位制密碼鎖,由n個相連的按鈕組成 n 30 按鈕有凹 凸兩種狀態,用手按按鈕會改變其狀態。然而讓人頭疼的是,當你按乙個按鈕時,跟它相鄰的兩個按鈕狀態也會反轉。當然,如果你按的是最左或者最右邊的按鈕,該按鈕只會影響到跟它相鄰的乙個按鈕。當前密碼鎖狀態已知,需要解決的問題是,你至少需要按...
特殊密碼鎖
總時間限制 1000ms 記憶體限制 1024kb 描述 有一種特殊的二進位制密碼鎖,由n個相連的按鈕組成 n 30 按鈕有凹 凸兩種狀態,用手按按鈕會改變其狀態。然而讓人頭疼的是,當你按乙個按鈕時,跟它相鄰的兩個按鈕狀態也會反轉。當然,如果你按的是最左或者最右邊的按鈕,該按鈕只會影響到跟它相鄰的乙...
特殊密碼鎖
兩行,給出兩個由0 1組成的等長字串,表示當前 目標密碼鎖狀態,其中0代表凹,1代表凸。輸出至少需要進行的按按鈕操作次數,如果無法實現轉變,則輸出impossible。樣例輸入 011 000樣例輸出 1 include include include include include include...