洛谷 P2040 開啟所有的燈

2022-04-04 18:53:49 字數 1076 閱讀 5425

pmshz在玩乙個益(ruo)智(zhi)的小遊戲,目的是開啟九盞燈所有的燈,這樣的遊戲難倒了pmshz。。。

這個燈很奇(fan)怪(ren),點一下就會將這個燈和其周圍四盞燈的開關狀態全部改變。現在你的任務就是就是告訴pmshz要全部開啟這些燈。

例如 0 1 1

1 0 0

1 0 1

點一下最中間的燈【2,2】就變成了

0 0 1

0 1 1

1 1 1

再點一下左上角的燈【1,1】就變成了

1 1 1

1 1 1

1 1 1

達成目標。最少需要2步。

輸出2即可。

輸入格式:

九個數字,3*3的格式輸入,每兩個數字中間只有乙個空格,表示燈初始的開關狀態。(0表示關,1表示開)

輸出格式:

1個整數,表示最少開啟所有燈所需要的步數。

輸入樣例#1: 複製

0  1  1

1 0 0

1 0 1

輸出樣例#1: 複製

2

這個題水不水,就看你怎麼考慮了。。。。

思路:看資料範圍,n*n==9,所以如果搜尋的話,時間複雜度為2^9可以跑過去。

#include#include

#include

#include

using

namespace

std;

int ans=0x7f7f7f7f

;bool map[10][10],vis[10][10

];bool

judge()

void dfs(int

sum)

for(int i=1;i<=3;i++)

for(int j=1;j<=3;j++)

if(!vis[i][j])

}int

main()

但是我們要談就更優異的演算法,我們知道,改變一盞偶數次,相當於沒有改變,而改變基數詞,相當於改變一次。所以這個題目可以轉成二進位制。

**見這裡

P2040開啟所有的燈

例如 0 1 1 1 0 0 1 0 1點一下最中間的燈 2,2 就變成了 0 0 1 0 1 1 1 1 1再點一下左上角的燈 1,1 就變成了 1 1 1 1 1 1 1 1 1達成目標。最少需要2步。輸出2即可。輸入格式 九個數字,3 3的格式輸入,每兩個數字中間只有乙個空格,表示燈初始的開關...

P2040 開啟所有的燈

pmshz在玩乙個益 ruo 智 zhi 的小遊戲,目的是開啟九盞燈所有的燈,這樣的遊戲難倒了pmshz。這個燈很奇 fan 怪 ren 點一下就會將這個燈和其周圍四盞燈的開關狀態全部改變。現在你的任務就是就是告訴pmshz要全部開啟這些燈。例如0 1 1 1 0 0 1 0 1點一下最中間的燈 2...

洛谷 P5445 路燈

題意見洛谷。首先考慮實時維護 forall i,j in 1,n 目前有多少時刻滿足能從 i 到達 j 顯然,i 能到達 j 當且僅當 i,j 在同乙個亮燈連續段裡。將當前狀態剖成若干個極大亮燈連續段,那麼能否到達關於 i,j 兩維的函式應該是由這些連續段,每段分別在 i 軸和 j 軸上作為兩條鄰邊...