棋盤是指乙個行和列編號從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 棋盤上的英文本母格仔,規則是連線上下...
象棋遊戲程式設計 畫棋盤
最近一段時間開始玩象棋,雖然棋藝不精,確也樂在其中。作為象棋初學者,很多高手對我都是避而遠之,在我的威逼利誘之下,才跟我對戰一二。後來有位朋友推薦我玩單機版的象棋遊戲,在佩服其演算法精湛的同時,也出現了不少問題。比如說,和電腦對戰的時候,我明明士可以退回去吃他的車,可我的士卻不聽使喚。類似情況還有很...