csp m3 t2 消消樂大師 Q老師

2021-10-07 00:03:39 字數 1531 閱讀 2095

q老師是個很老實的老師,最近在積極準備考研。q老師平時只喜歡用linux系統,所以q老師的電腦上沒什麼娛樂的遊戲,所以q老師平時除了玩linux上的賽車遊戲supertuxkart之外,就是喜歡消消樂了。

遊戲在乙個包含有n行m列的棋盤上進行,棋盤的每個格仔都有一種顏色的棋子。當一行或一列上有連續三個或更多的相同顏色的棋子時,這些棋子都被消除。當有多處可以被消除時,這些地方的棋子將同時被消除。

乙個棋子可能在某一行和某一列同時被消除。

由於這個遊戲是闖關制,而且有時間限制,當q老師開啟下一關時,q老師的好哥們叫q老師去爬泰山去了,q老師不想輸在這一關,所以它來求助你了!!

輸入第一行包含兩個整數n,m,表示行數和列數

接下來n行m列,每行中數字用空格隔開,每個數字代表這個位置的棋子的顏色。數字都大於0.

輸出n行m列,每行中數字用空格隔開,輸出消除之後的棋盤。(如果乙個方格中的棋子被消除,則對應的方格輸出0,否則輸出棋子的顏色編號。)

輸入樣例 1

4 5

2 2 3 1 2

3 4 5 1 4

2 3 2 1 3

2 2 2 4 4

輸出樣例 1

2 2 3 0 2

3 4 5 0 4

2 3 2 0 3

0 0 0 4 4

輸入樣例 2

4 5

2 2 3 1 2

3 1 1 1 1

2 3 2 1 3

2 2 3 3 3

輸出樣例 2

2 2 3 0 2

3 0 0 0 0

2 3 2 0 3

2 2 0 0 0

本題中思路很簡單,就是找到行或列中連續相同大於或等於3個的格仔將其消除(置為0),但是不可以直接在原圖中直接消除,那樣會導致行中消除完了,而原本滿足條件的列無法滿足,從而無法消除,因此需要將該圖再進行一次儲存,通過新圖進行判斷是否滿足條件,然後對原圖進行操作。

本程式中,將圖儲存到二維陣列中,然後遍歷新陣列div,判斷每乙個格仔所在的行與列中是否滿足連續三個以上格仔相同。若相同則對原陣列a的相應位置更新為0

最後輸出a陣列即可

#include#includeusing namespace std;

int n, m, a[30][30];

int vis[30][30];

int main()

if (c2 - j >= 3)

} for (int i = 0; i < n; i++)

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

if (vis[i][j])

a[i][j] = 0;

for (int i = 0; i < n; i++)

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

return 0;

}

M3 T2消消樂大師

要求消除n m矩陣中一行或者一列相同的,可以轉換為乙個更小的問題 如何消除乙個陣列中超過三個相同的數字。void solve int a,int size 消除陣列a size 中超過3次相同的數字 l 用來記錄當前段的開頭,r用來記錄當前遍歷的數字。進入下一段 數字開始不同 的時候,先判斷一下當前...

week12 CSP模擬T2消消樂

q老師是個很老實的老師,最近在積極準備考研。q老師平時只喜歡用linux系統,所以q老師的電腦上沒什麼娛樂的遊戲,所以q老師平時除了玩linux上的賽車遊戲supertuxkart之外,就是喜歡消消樂了。遊戲在乙個包含有n行m列的棋盤上進行,棋盤的每個格仔都有一種顏色的棋子。當一行或一列上有連續三個...

程式設計CSP M3 補題 T3 咕咕東學英語

乙個只有大寫a b的序列,求這個序列有多少個子串是delicious的。delicious 對於乙個字串,它是delicious的,當且僅當它的每乙個字元都屬於乙個長度大於1的回文子串。第一行乙個整數n,代表序列長度 第二行乙個只含ab的字串 滿足題意的子串個數 對於這道題,我一開始是從正面下手,即...