001特殊密碼鎖

2021-10-02 16:59:00 字數 778 閱讀 7025

**可能有點搓,絕對原創!

描述有一種特殊的二進位制密碼鎖,由n個相連的按鈕組成(n<30),按鈕有凹/凸兩種狀態,用手按按鈕會改變其狀態。

然而讓人頭疼的是,當你按乙個按鈕時,跟它相鄰的兩個按鈕狀態也會反轉。當然,如果你按的是最左或者最右邊的按鈕,該按鈕只會影響到跟它相鄰的乙個按鈕。

當前密碼鎖狀態已知,需要解決的問題是,你至少需要按多少次按鈕,才能將密碼鎖轉變為所期望的目標狀態。

輸入兩行,給出兩個由0、1組成的等長字串,表示當前/目標密碼鎖狀態,其中0代表凹,1代表凸。

輸出至少需要進行的按按鈕操作次數,如果無法實現轉變,則輸出impossible。

樣例輸入

011

000

樣例輸出

1
#include #include using namespace std;

int presscount(string passwndold,string passwndnew)

else

}else

else

}b=presscount(passwndold,passwndnew);

b+=1;

if((a==-1)&&(b==0))

else if((a!=-1)&&(b==0))

else if((a==-1)&&(b!=0))

else if((a!=-1)&&(b!=0))

else

}// cout

}

001 特殊密碼鎖(貪心)

這道題不難,可以列舉來寫,每個鎖兩種狀態一共30個鎖2 30的複雜度可能不會超,在此提供另外一種貪心的思路。對於第乙個鎖,我們列舉 好吧算不上列舉 開或不開兩種情況。如果第乙個鎖不為目標狀態,那麼只有第二個鎖才能關掉它。依次類推,如果第i個鎖不為目標狀態,那麼只有第i 1個鎖才能關掉它 最後,我們只...

MOOC 001 特殊密碼鎖

首先應該想到熄燈問題,熄燈問題是使列舉簡單化,找到唯一的一種情況列舉。此題目與熄燈問題相似,只要按下搜尋到的與目標密碼不同密碼的後一位密碼即可,這樣便可以連帶改變搜尋到的那一位密碼,當遍歷後只需比較最後一位密碼即可,相同則輸出 1010 0000 第一位不同,則要改變第二位密碼,連帶將第一位也轉變 ...

特殊密碼鎖

有一種特殊的二進位制密碼鎖,由n個相連的按鈕組成 n 30 按鈕有凹 凸兩種狀態,用手按按鈕會改變其狀態。然而讓人頭疼的是,當你按乙個按鈕時,跟它相鄰的兩個按鈕狀態也會反轉。當然,如果你按的是最左或者最右邊的按鈕,該按鈕只會影響到跟它相鄰的乙個按鈕。當前密碼鎖狀態已知,需要解決的問題是,你至少需要按...