「飛行員兄弟」這個遊戲,需要玩家順利的開啟乙個擁有16個把手的冰箱。
已知每個把手可以處於以下兩種狀態之一:開啟或關閉。
只有當所有把手都開啟時,冰箱才會開啟。
把手可以表示為乙個4х4的矩陣,您可以改變任何乙個位置[i,j]上把手的狀態。
但是,這也會使得第i行和第j列上的所有把手的狀態也隨著改變。
請你求出開啟冰箱所需的切換把手的次數最小值是多少。
輸入格式
輸入一共包含四行,每行包含四個把手的初始狀態。
符號「+」表示把手處於閉合狀態,而符號「-」表示把手處於開啟狀態。
至少乙個手柄的初始狀態是關閉的。
輸出格式
第一行輸出乙個整數n,表示所需的最小切換把手次數。
接下來n行描述切換順序,每行輸入兩個整數,代表被切換狀態的把手的行號和列號,數字之間用空格隔開。
注意:如果存在多種開啟冰箱的方式,則按照優先順序整體從上到下,同行從左到右開啟。
資料範圍
1≤i,j≤4
輸入樣例:
-+--
----
----
-+--
輸出樣例:
6
1 11 3
1 44 1
4 34 4
ac**
#include
#include
#include
#include
#include
using
namespace std;
typedef pair<
int,
int> pii;
const
int n =5;
char g[n]
[n], backup[n]
[n];
intget
(int x,
int y)
void
change
(int x,
int y)
void
turn
(int x,
int y)
change
(x, y);}
void
work()
);turn
(i, j);}
}}bool success =
true
;for
(int i =
0; i <
4; i++)}
}if(success)
}memcpy
(g, backup,
sizeof
(backup));
} cout << res.
size()
<< endl;
for(
auto op : res)
}int
main()
work()
;return0;
}
飛行員兄弟
飛行員兄弟 這個遊戲,需要玩家順利的開啟乙個擁有16個把手的冰箱。已知每個把手可以處於以下兩種狀態之一 開啟或關閉。只有當所有把手都開啟時,冰箱才會開啟。把手可以表示為乙個4 4的矩陣,您可以改變任何乙個位置 i,j 上把手的狀態。但是,這也會使得第i行和第j列上的所有把手的狀態也隨著改變。請你求出...
飛行員兄弟
飛行員兄弟 這個遊戲,需要玩家順利的開啟乙個擁有16個把手的冰箱。已知每個把手可以處於以下兩種狀態之一 開啟或關閉。只有當所有把手都開啟時,冰箱才會開啟。把手可以表示為乙個4 4的矩陣,您可以改變任何乙個位置 i,j 上把手的狀態。但是,這也會使得第i行和第j列上的所有把手的狀態也隨著改變。請你求出...
飛行員兄弟
每個把手都有兩種選擇,按 不按,總共有16個把手,因此有216 65536 2 65536 216 65 536種操作。那麼我們可以用16位二進位制數來表示,即從0000000000000000到1111111111111111。然後用1來表示按下,用0表示不按。主要步驟 include inclu...