001 特殊密碼鎖(貪心)

2021-08-27 05:40:38 字數 507 閱讀 3491

這道題不難,可以列舉來寫,每個鎖兩種狀態一共30個鎖2^30的複雜度可能不會超,在此提供另外一種貪心的思路。

對於第乙個鎖,我們列舉(好吧算不上列舉)開或不開兩種情況。如果第乙個鎖不為目標狀態,那麼只有第二個鎖才能關掉它。。。依次類推,如果第i個鎖不為目標狀態,那麼只有第i+1個鎖才能關掉它

最後,我們只用判斷最後乙個鎖是否為目標狀態即可

#include #include#include#includeusing namespace std;

const int maxn = 35;

int srccode[maxn], descode[maxn];

int len = 1;

int solve(int i1)

if(tmp[len] == descode[len]) return step; //符合情況

else return 1<<30; //不符合情況

}int main()

001特殊密碼鎖

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

MOOC 001 特殊密碼鎖

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

貪心演算法 特殊密碼鎖

1.cpp created on 2017年8月30日 author administrator include include include using namespace std string result,s,lock int temp 0 answer 1e9,n void press i...