題目
本題不適用於遞推,因為前幾個題中乙個開關可以只由乙個開關來改變它的狀態(上面的狀態可以由下面改變 如:費解的開關),但本題中上面的開關狀態可以由下面任意乙個開關改變。
思維:把所有的情況都列舉出來,因為本題可以暴力,時間複雜度小於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位的二進位制數,就可以確定我們的...