題目:
【問題描述】
棋盤是指乙個行和列編號從1~n的nxn的二進位制矩陣,當行號和列號之和為偶數時該矩陣對應位置為黑色的(1),否則為白色的(0)。以下圖示為n=1、2、3時的棋盤。
給出乙個nxn的二進位制矩陣,請找出位於該矩陣內的最大尺寸的完整棋盤,以及最大尺寸棋盤的數量(棋盤可以交疊)。
【輸入形式】
每個測試用例的第一行是乙個正整數n(1<=n<=2000),表示給定矩陣的行數和列數,接下來的n行描述了這個矩陣:每行有n個字元,既可以是「1」(代表黑塊),也可以是「0」(代表白塊)。矩陣至少包含乙個「1」字元。
【輸出形式】
輸出最大尺寸棋盤的行列的大小,以及最大棋盤的個數,以空格分隔。
【樣例輸入】
5
00101
11010
00101
01010
11101
【樣例輸出】
3 3
大概思路:
①輸入的處理。將給定矩陣設為全域性變數,用getchar()讀入每乙個元素。在輸入正整數n後還要用個getchar()吃掉換行符,在每一行的元素讀取完後也要用個getchar()吃掉換行符。
②圖的遍歷。以給定矩陣的每乙個元素作為棋盤左上角的頂點進行深搜。
③結果的輸出。將不同尺寸的棋盤的數目儲存在陣列裡,輸出尺寸的最大值和最大尺寸的數目。
ac**:
#include#includeusing namespace std;
bool map[2001][2001];
int n,num[2001],ans=0;
void dfs(int m,int n,int depth)//以map[m][n]為左上角的頂點,depth為尺寸的棋盤
} //進行到這一步說明以map[m][n]左上角的頂點,depth為尺寸的棋盤是存在的
if(depth>ans) ans=depth;//更新最大尺寸
num[depth]++;//將該尺寸的數目加一
dfs(m,n,++depth);//尺寸擴大一,仍以該點為左上角的頂點深搜
}int main()
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
dfs(i,j,1);//對給定矩陣中的每乙個點進行深搜
cout<
}
小學期鍊錶作業
include include include using namespace std class linknode class link linknode link create else cout 輸入資料 n cin data return phead void link list linkn...
大一小白html筆記
html分為三個部分,分別為html標籤,head標籤,body標籤。三個標籤全部是雙標籤,也就是說所有的內容都要寫進裡邊 其中head標籤分為兩個部分字元標籤和title標籤。body標籤用來寫內容。head標籤相當於html的頭部,用來我們書寫一些css樣式。需要在title標籤下邊寫上。然後把...
大一上學期
書接上文,報名參加培訓之後,在自學和做題中,熬過了乙個月。終於迎來了最後的考核,我用借來的電腦 當時還沒有電腦,沒電腦之前沒有上機機會學的挺費勁,學的也不好,就借用我姐的電腦,反正成績上來了 在實驗室寫了五個小時 第乙個小時別人做出來三道題了,我還卡在第一道題,著急啊。過了乙個小時之後終於趕上做出來...