程式設計訓練 棋盤

2021-10-09 02:38:20 字數 1381 閱讀 9600

棋盤是指乙個行和列編號從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

(10/10分,c++)

//7.棋盤

#include

using

namespace std;

int cs_bo[

2001][

2001];

//chessboard

int num[

2001];

//各尺寸的棋盤的數量

int max_size =0;

//最大尺寸

void

count

(int i,

int j,

int size,

int n)

if(i + size -

1> n || j + size -

1> n)

//超出範圍

for(

int k =

1; k <= size; k++

)elseif(

((k + l)%2

!=0&& cs_bo[i + k -1]

[j + l -1]

==1))

}}num[size]+=

1;//size大小的棋盤存在,對應數量+1

if(size > max_size)

count

(i, j, size +

1, n)

;//以(i,j)為左上位置尋找更大的棋盤

}int

main()

cin >> n;

for(

int i =

1; i <= n; i++)}

for(

int i =

1; i <= n; i++)}

cout << max_size <<

' '<< num[max_size]

;return0;

}

日常訓練 20170603 棋盤

給定乙個 n n 的棋盤,棋盤上每個位置要麼為空要麼為障礙。定義棋盤上兩個位置 x y u,v 能互相攻擊當前僅當滿足以下兩個條件 1.x u或 y v 2.對於 x y 與 u v 之間的所有位置,均不是障礙。現在有 q 個詢問,每個詢問給定 ki 要求從棋盤中選出 ki 個空位置來放棋子,問最少...

棋盤類遊戲程式設計

簡單的l型圖案 三個單元格 在棋盤中心位置的形態為 const int covertype 4 3 2 當然根據座標系設定方位的不同,最終圖案的三維表示也不盡相同,只需統一即可,以及最好將座標系的中心置於棋盤的中心位置 這樣方位之間便會形成正負對稱的情況 5 5 棋盤上的英文本母格仔,規則是連線上下...

象棋遊戲程式設計 畫棋盤

最近一段時間開始玩象棋,雖然棋藝不精,確也樂在其中。作為象棋初學者,很多高手對我都是避而遠之,在我的威逼利誘之下,才跟我對戰一二。後來有位朋友推薦我玩單機版的象棋遊戲,在佩服其演算法精湛的同時,也出現了不少問題。比如說,和電腦對戰的時候,我明明士可以退回去吃他的車,可我的士卻不聽使喚。類似情況還有很...