要求消除n*m矩陣中一行或者一列相同的,可以轉換為乙個更小的問題:如何消除乙個陣列中超過三個相同的數字。
void solve(int *a,int size)//消除陣列a[ size ]中超過3次相同的數字:l 用來記錄當前段的開頭,r用來記錄當前遍歷的數字。進入下一段(數字開始不同)的時候,先判斷一下當前段是否可以消除,可以就置為0。
while
(r} l=r;
}}
要注意的是,這個是遇到不同的數字就處理上一段,所以最後一段沒有處理,需要單獨拿出來處理。
if
(r==size-1)
}}
最後遍歷這個矩陣的每一行和每一列,進行上面的操作,就可以解決問題了。
#include
using
namespace std;
int n,m,g1[35]
[35],g2[35]
[35];
void
solve
(int
* a,
int size)
} l=r;}if
(r==size-1)
}}}}
intmain()
}for
(int i=
0;i)//一行一行來
solve
(g1[i]
,m);
for(
int i=
0;i)solve
(g2[i]
,n);
//然後合併
for(
int i=
0;i)printf
("\n");
}return0;
}
csp m3 t2 消消樂大師 Q老師
q老師是個很老實的老師,最近在積極準備考研。q老師平時只喜歡用linux系統,所以q老師的電腦上沒什麼娛樂的遊戲,所以q老師平時除了玩linux上的賽車遊戲supertuxkart之外,就是喜歡消消樂了。遊戲在乙個包含有n行m列的棋盤上進行,棋盤的每個格仔都有一種顏色的棋子。當一行或一列上有連續三個...
week12 CSP模擬T2消消樂
q老師是個很老實的老師,最近在積極準備考研。q老師平時只喜歡用linux系統,所以q老師的電腦上沒什麼娛樂的遊戲,所以q老師平時除了玩linux上的賽車遊戲supertuxkart之外,就是喜歡消消樂了。遊戲在乙個包含有n行m列的棋盤上進行,棋盤的每個格仔都有一種顏色的棋子。當一行或一列上有連續三個...
M3 T4咕咕東學英語
delicious的定義 當且僅當它的每乙個字元都屬於乙個大於1的回文子串中。正向求出子字串符合delicious的不好求,我們思考一下,逆向的求出不符合delicious的子字串區間。如ab aab aaab aa b或者ba bba bbba bb a這樣的是不符合delicious的,其他的都...