**可能有點搓,絕對原創!
描述有一種特殊的二進位制密碼鎖,由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 按鈕有凹 凸兩種狀態,用手按按鈕會改變其狀態。然而讓人頭疼的是,當你按乙個按鈕時,跟它相鄰的兩個按鈕狀態也會反轉。當然,如果你按的是最左或者最右邊的按鈕,該按鈕只會影響到跟它相鄰的乙個按鈕。當前密碼鎖狀態已知,需要解決的問題是,你至少需要按...