洛谷 P1275 魔板

2022-04-10 13:58:22 字數 1337 閱讀 5154

有這樣一種魔板:它是乙個長方形的面板,被劃分成n行m列的n*m個方格。每個方格內有乙個小燈泡,燈泡的狀態有兩種(亮或暗)。我們可以通過若干操作使魔板從乙個狀態改變為另乙個狀態。操作的方式有兩種:

(1)任選一行,改變該行中所有燈泡的狀態,即亮的變暗、暗的變亮;

(2)任選兩列,交換其位置。

當然並不是任意的兩種狀態都可以通過若干操作來實現互相轉化的。

你的任務就是根據給定兩個魔板狀態,判斷兩個狀態能否互相轉化。

輸入格式:

檔案中包含多組資料。第一行乙個整數k,表示有k組資料。

每組資料的第一行兩個整數n和m。(0

以下的n行描述第乙個魔板。每行有m個數字(0或1),中間用空格分隔。若第x行的第y個數字為0,則表示魔板的第x行y列的燈泡為「亮」;否則為「暗」。

然後的n行描述第二個魔板。資料格式同上。

任意兩組資料間沒有空行。

輸出格式:

共k行,依次描述每一組資料的結果。

若兩個魔板可以相互轉化,則輸出yes,否則輸出no。(注意:請使用大寫字母)

輸入樣例#1:

2

3 40 1 0 1

1 0 0 1

0 0 0 0

0 1 0 1

1 1 0 0

0 0 0 0

2 20 0

0 11 1

1 1

輸出樣例#1:

yesno

思路:第一步:在最外層迴圈列舉初始的每一列當做目標狀態的第一列

第二步:在每層迴圈中比較當前這列和目標狀態的第一列的同行的數,如果不相同則把初始的那一行翻轉

第三步:看看剩下的列是否可以一一對應,如果可以就yes,不可以就繼續列舉。

錯因:行列弄反了好幾次,調了很久。

#include#include

#include

#include

using

namespace

std;

intk,n,m,flag,num;

int sum1[110],sum2[110

];bool vised[110

];int ed[110][110],be[110][110],map[110][110

];int

main()

if(ok) continue

;

else vised[j]=1,num++;

}if(num==m)

}if(!flag) cout<<"no"

<}

}

洛谷 P1275 魔板(暴力 思維)

題目描述 有這樣一種魔板 它是乙個長方形的面板,被劃分成n行m列的n m個方格。每個方格內有乙個小燈泡,燈泡的狀態有兩種 亮或暗 我們可以通過若干操作使魔板從乙個狀態改變為另乙個狀態。操作的方式有兩種 1 任選一行,改變該行中所有燈泡的狀態,即亮的變暗 暗的變亮 2 任選兩列,交換其位置。當然並不是...

洛谷 P1275 魔板(暴力 思維)

有這樣一種魔板 它是乙個長方形的面板,被劃分成n行m列的n m個方格。每個方格內有乙個小燈泡,燈泡的狀態有兩種 亮或暗 我們可以通過若干操作使魔板從乙個狀態改變為另乙個狀態。操作的方式有兩種 1 任選一行,改變該行中所有燈泡的狀態,即亮的變暗 暗的變亮 2 任選兩列,交換其位置。當然並不是任意的兩種...

洛谷 P2730 魔板

在成功地發明了魔方之後,魯比克先生發明了它的二維版本,稱作魔板。這是一張有8個大小相同的格仔的魔板 1 2 3 4 8 7 6 5 我們知道魔板的每乙個方格都有一種顏色。這8種顏色用前8個正整數來表示。可以用顏色的序列來表示一種魔板狀態,規定從魔板的左上角開始,沿順時針方向依次取出整數,構成乙個顏色...