HNU大一小學期作業三 棋盤

2021-08-21 17:40:26 字數 1237 閱讀 3700

題目:

【問題描述】

棋盤是指乙個行和列編號從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標籤下邊寫上。然後把...

大一上學期

書接上文,報名參加培訓之後,在自學和做題中,熬過了乙個月。終於迎來了最後的考核,我用借來的電腦 當時還沒有電腦,沒電腦之前沒有上機機會學的挺費勁,學的也不好,就借用我姐的電腦,反正成績上來了 在實驗室寫了五個小時 第乙個小時別人做出來三道題了,我還卡在第一道題,著急啊。過了乙個小時之後終於趕上做出來...