AcWing 116 飛行員兄弟(無腦遞推)

2021-10-22 11:23:54 字數 1297 閱讀 4155

題目

本題不適用於遞推,因為前幾個題中乙個開關可以只由乙個開關來改變它的狀態(上面的狀態可以由下面改變 如:費解的開關),但本題中上面的開關狀態可以由下面任意乙個開關改變。

思維:把所有的情況都列舉出來,因為本題可以暴力,時間複雜度小於1億

vector容器的**會使執行時間多3倍(拿y總的**和自己的進行了對比,親測)

學會使用memcpy和sizeof

#include

//因為y總用的vector容器,我將他的**進行了改變,藍橋杯vector會有警告

#include

#include

#include

using

namespace std;

const

int n =5;

char g[n]

[n], backup[n]

[n];

int back[25]

[n];

//back用於輸出最後答案,每次發現步數少到都會複製到back中

intget

(int x,

int y)

void

turn_one

(int x,

int y)

void

turn_all

(int x,

int y)

turn_one

(x, y);}

intmain()

// 判斷所有燈泡是否全亮

bool has_closed =

false

;for

(int i =

0; i <

4; i ++

)for

(int j =

0; j <

4; j ++)if

(g[i]

[j]==

'+')

has_closed =

true;if

(has_closed ==

false)}

memcpy

(g, backup,

sizeof g)

;// 還原g陣列

} cout << cnt << endl;

for(

int i=

0;i)return0;

}

Acwing 116 飛行員兄弟

飛行員兄弟 這個遊戲,需要玩家順利的開啟乙個擁有16個把手的冰箱。已知每個把手可以處於以下兩種狀態之一 開啟或關閉。只有當所有把手都開啟時,冰箱才會開啟。把手可以表示為乙個4 4的矩陣,您可以改變任何乙個位置 i,j 上把手的狀態。但是,這也會使得第i行和第j列上的所有把手的狀態也隨著改變。請你求出...

116 飛行員兄弟

原題鏈結 include include include include include using namespace std typedef pair int,int pii const int maxn 5 char state maxn maxn 儲存題目給出的矩陣 vector ans,t...

116 飛行員兄弟

演算法標籤 位運算 二進位制列舉 這道題目解題思路大致是,首先我們可以構造乙個16位二進位制數,然後,二進位制數的每一位代表4x4矩陣中的一位,例如1代表 1,1 2代表 1,2 3代表 1,3 4代表 1,4 5代表 2,1 既然這樣的話,那麼我們只需要列舉這個16位的二進位制數,就可以確定我們的...