二進位制列舉

2022-03-11 14:31:32 字數 791 閱讀 5326

題目鏈結

題意:總共有3x3盞燈,每次切換乙個燈還會同時改變上下左右的燈,問想把燈全部開啟最少需要操作多少次

輸入:乙個3x3的矩陣

分析:操作順序對題目是不影響的,另外,操作奇數次等價於1次,偶數次等價於2次,也就是說最大操作次數是9次

分析題目我們可以發現題目資料規模並不大,可以暴力列舉,並且燈只有開和關兩種狀態,可以分別用1,0來表示

暴力列舉就是其實就相當於列舉9個元素的全部子集個數,也就是2^9即1<<9

1 #include 2

using

namespace

std;

3const

int inf=1

<<30

;4 typedef long

long

ll;5

const

double pi=acos(-1);6

const

int mod=2000120420010122;7

const

int maxn=2e5+7;8

int a[3][3],b[3][3];9

intmain()

14int ans=10;15

for(int x=0;x<(1

<<9);x++)30}

31bool flag=true;32

for(int i=0;i<3;i++)36}

37if(flag) ans=min(ans,cnt); 38}

39 cout40return0;

41 }

二進位制列舉

fliptile 乙個反轉問題,大意是一頭牛要反轉木板,木板有黑和白,全部翻成白色的反法 輸出。小蒟蒻根本想不到 參考了大佬的部落格。點此轉入 把第一行的全部翻法都試一遍,然後看哪種的步數最少。好難想。include include int maze 20 20 int t 20 20 int f ...

二進位制列舉

一 二進位制操作 算數字運算 a 60 0011 1100 b 13 0000 1101 1.與 兩個二進位制數,同 1為 1,否則為 0。a b 12 0000 1100 2.或 兩個二進位制數,同 0為 0,否則為 1。a b 61 0011 1101 3.非 按位取反 對二進位制每一位進行了一...

二進位制列舉

讓我們從乙個題目入手 從乙個大小為n的整數集中選取一些元素,使得它們的和等於給定的值t。每個元素限選一次,不能乙個都不選。關於這個題目,我們很容易想到的便是對所有元素進行暴力搜尋,然後進行剪枝便可。下面我將介紹二進位制列舉的思路和流程來巧妙的解決這個問題。對任一數來說,所面臨的問題是取或不取,在二進...