描述
有一種特殊的二進位制密碼鎖,由n個相連的按鈕組成(n<30),按鈕有凹/凸兩種狀態,用手按按鈕會改變其狀態。輸入然而讓人頭疼的是,當你按乙個按鈕時,跟它相鄰的兩個按鈕狀態也會反轉。當然,如果你按的是最左或者最右邊的按鈕,該按鈕只會影響到跟它相鄰的乙個按鈕。
當前密碼鎖狀態已知,需要解決的問題是,你至少需要按多少次按鈕,才能將密碼鎖轉變為所期望的目標狀態。
兩行,給出兩個由0、1組成的等長字串,表示當前/目標密碼鎖狀態,其中0代表凹,1代表凸。輸出
至少需要進行的按按鈕操作次數,如果無法實現轉變,則輸出impossible。樣例輸入
011樣例輸出 題目分析:000
這道題我們可以遍歷整個密碼鎖,讓原始串與答案串一一比較,如果兩串當前位不一樣則反轉下一位的按鈕,遍歷完成後如果最後最後一位與答案串不同,則無法實現轉變輸出impossible,否則輸出記錄的改變次數。
要注意一點:要把第一位是否反轉的兩種情況都試一次。
1.從第1位開始,如果第一位不匹配則反轉第二位,以此類推。
2.先反轉第1位,再開始一一比較。
上**:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define ll long long
using
namespace std;
const
int n=35;
int cnt=0;
char e[n]
;void
mswap
(char
&c)//反轉函式
bool
sol(
char s,
int len)
i++;}
if(s[len-1]
==e[len-1]
)return
true
;else
return
false;}
intmain()
特殊密碼鎖
有一種特殊的二進位制密碼鎖,由n個相連的按鈕組成 n 30 按鈕有凹 凸兩種狀態,用手按按鈕會改變其狀態。然而讓人頭疼的是,當你按乙個按鈕時,跟它相鄰的兩個按鈕狀態也會反轉。當然,如果你按的是最左或者最右邊的按鈕,該按鈕只會影響到跟它相鄰的乙個按鈕。當前密碼鎖狀態已知,需要解決的問題是,你至少需要按...
特殊密碼鎖
總時間限制 1000ms 記憶體限制 1024kb 描述 有一種特殊的二進位制密碼鎖,由n個相連的按鈕組成 n 30 按鈕有凹 凸兩種狀態,用手按按鈕會改變其狀態。然而讓人頭疼的是,當你按乙個按鈕時,跟它相鄰的兩個按鈕狀態也會反轉。當然,如果你按的是最左或者最右邊的按鈕,該按鈕只會影響到跟它相鄰的乙...
特殊密碼鎖
例題四 特殊密碼鎖 描述有一種特殊的二進位制密碼鎖,由n個相連的按鈕組成 n 30 按鈕有凹 凸兩種狀態,用手按按鈕會改變其狀態。然而讓人頭疼的是,當你按乙個按鈕時,跟它相鄰的兩個按鈕狀態也會反轉。當然,如果你按的是最左或者最右邊的按鈕,該按鈕只會影響到跟它相鄰的乙個按鈕。當前密碼鎖狀態已知,需要解...