題目鏈結
1題目是4*4的矩陣,資料範圍小,考慮暴力列舉
2對矩陣標號
0 1 2 3
4 5 6 7
8 9 10 11
12 14 14 15
3總共有16個位置,每乙個位置要麼選,要麼不選,所以情況有2^16種,我們採用二進位制列舉,從0~2 ^16-1,每乙個整數看他的16位二進位制數,對應位上有1就選。例如1二進位制為:0000 0000 0000 0001,只有第乙個位置有1,那麼我們選第乙個位置,把對應的行,對應的列改變 .
4因為是從0列舉到2^16-1,所以得到的答案滿足:
細節見**
//目標:全部變成減號
#include
using
namespace std;
const
int n =6;
char s[n]
[n];
char tmp[n]
[n];
typedef pair<
int,
int> pii;
typedef vector vec;
void
change
(int x,
int y)
if(tmp[x]
[y]==
'+') tmp[x]
[y]=
'-';
else tmp[x]
[y]=
'+';
return;}
//檢查是不是全部變成「-」了
bool
check()
}return1;
}int
main()
);}}
if(check()
)}printf
("%d\n"
,ans.
size()
);//注意輸出的時候要+1
for(
int i=
0;isize()
;i++
)return0;
}
AcWing 飛行員兄弟
資料範圍非常 小,可以列舉出所有的操作尋找最優解.如何列舉所有的操作?首先看出來這個問題有這樣的性質 如果改變了乙個把手的狀態,那麼就沒有必要再次改變它.改變多個把手狀態的順序對結果沒有影響.所以,所有的操作即為最終對於每把手進行狀態切換或者不進行狀態切換,也就是選或者不選的問題.共有16個把手,所...
Acwing 116 飛行員兄弟
飛行員兄弟 這個遊戲,需要玩家順利的開啟乙個擁有16個把手的冰箱。已知每個把手可以處於以下兩種狀態之一 開啟或關閉。只有當所有把手都開啟時,冰箱才會開啟。把手可以表示為乙個4 4的矩陣,您可以改變任何乙個位置 i,j 上把手的狀態。但是,這也會使得第i行和第j列上的所有把手的狀態也隨著改變。請你求出...
飛行員兄弟
飛行員兄弟 這個遊戲,需要玩家順利的開啟乙個擁有16個把手的冰箱。已知每個把手可以處於以下兩種狀態之一 開啟或關閉。只有當所有把手都開啟時,冰箱才會開啟。把手可以表示為乙個4 4的矩陣,您可以改變任何乙個位置 i,j 上把手的狀態。但是,這也會使得第i行和第j列上的所有把手的狀態也隨著改變。請你求出...