這道題的確比較難想,首先我們知道圖比較小,有可能是列舉,那麼該如何列舉呢???
你可以發現,我們只要把第一排定了,並且保證第一排不准動,那麼答案就定了
也就是說,我們首先用二進位制列舉,列舉第一行需要翻轉的,然後讓第一行不准再翻轉,後面的翻轉只能在第二行進行,那麼第二翻轉的實際上是定好了的,然後因為定好了,所以不能翻轉,那麼第二行也定了,我們要改變第二行,只能通過第三行,最後判斷一下最後一位是不是0就好了,做法的話,可以把每一行用乙個數字儲存,然後進行異或操作,對某位的1或者0進行操作,或者笨一點開二維陣列。
#include usingnamespace
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...