AcWing95 費解的開關 列舉 位運算

2021-10-01 13:14:28 字數 978 閱讀 5934

這道題的確比較難想,首先我們知道圖比較小,有可能是列舉,那麼該如何列舉呢???

你可以發現,我們只要把第一排定了,並且保證第一排不准動,那麼答案就定了

也就是說,我們首先用二進位制列舉,列舉第一行需要翻轉的,然後讓第一行不准再翻轉,後面的翻轉只能在第二行進行,那麼第二翻轉的實際上是定好了的,然後因為定好了,所以不能翻轉,那麼第二行也定了,我們要改變第二行,只能通過第三行,最後判斷一下最後一位是不是0就好了,做法的話,可以把每一行用乙個數字儲存,然後進行異或操作,對某位的1或者0進行操作,或者笨一點開二維陣列。

#include using

namespace

std;

char str[10][10

];const

int inf = 0x3f3f3f3f

;int

main()

ss=ss/2

; }

}int b[5

];

int ans=inf;

for (int i=0;i<(1

<<5)-1;i++)

int cnt=0

;

for (int j=0;j<5;j++)

if (j-1>=0

) }

}for (int j=1;j<5;j++)

if (k-1>=0

)

if (j+1

<5

) }}}

int flag=0

;

for (int j=0;j<5;j++)

}if (flag==0

) }

if (ans<=6

)else

}return0;

}

acwing 95 費解的開關

時 空限制 1s 256mb 你玩過 拉燈 遊戲嗎?25盞燈排成乙個5x5的方形。每乙個燈都有乙個開關,遊戲者可以改變它的狀態。每一步,遊戲者可以改變某乙個燈的狀態。遊戲者改變乙個燈的狀態會產生連鎖反應 和這個燈上下左右相鄰的燈也要相應地改變其狀態。我們用數字 1 表示一盞開著的燈,用數字 0 表示...

AcWing 95 費解的開關

你玩過 拉燈 遊戲嗎?25盞燈排成乙個5x5的方形。每乙個燈都有乙個開關,遊戲者可以改變它的狀態。每一步,遊戲者可以改變某乙個燈的狀態。遊戲者改變乙個燈的狀態會產生連鎖反應 和這個燈上下左右相鄰的燈也要相應地改變其狀態。我們用數字 1 表示一盞開著的燈,用數字 0 表示關著的燈。下面這種狀態 101...

ACwing 95 費解的開關

你玩過 拉燈 遊戲嗎?25盞燈排成乙個5x5的方形。每乙個燈都有乙個開關,遊戲者可以改變它的狀態。每一步,遊戲者可以改變某乙個燈的狀態。遊戲者改變乙個燈的狀態會產生連鎖反應 和這個燈上下左右相鄰的燈也要相應地改變其狀態。我們用數字 1 表示一盞開著的燈,用數字 0 表示關著的燈。下面這種狀態 101...