正方形 求被 包圍的0的個數

2021-08-21 20:38:55 字數 962 閱讀 8405

程式設計計算由「*」號圍成的下列圖形的面積。面積計算方法是統計*號所圍成的閉合曲線中水平線和垂直線交點的數目。如下圖所示,在10*10的二維陣列中,有「*」圍住了15個點,因此面積為15。

輸入0-1矩陣(1表示*)

輸出面積。

0 0 0 0 0 0 0 0 0 0

0 0 0 0 1 1 1 0 0 0

0 0 0 0 1 0 0 1 0 0

0 0 0 0 0 1 0 0 1 0

0 0 1 0 0 0 1 0 1 0

0 1 0 1 0 1 0 0 1 0

0 1 0 0 1 1 0 1 1 0

0 0 1 0 0 0 0 1 0 0

0 0 0 1 1 1 1 1 0 0

0 0 0 0 0 0 0 0 0 0

15
#include#define maxn 12

int p[maxn][maxn];

int main()

for(i=2;i<=n-1;i++)

for(j=2;j<=n-1;j++)

for(j=2;j<=n-1;j++)

for(i=2;i<=n-1;i++)

int sum=0;

for(i=1;i<=n;i++)

for(j=1;j<=n;j++)

printf("%d",sum);

return 0;

}

解題技巧:

先將四周一圈的為0的值賦為3,因為邊界區肯定不會被*包圍,其次:分析可知只要四周有乙個3的值就不會是被*完全包圍的,用兩次逐行逐列進行賦值,只要上下左右有乙個為3的值也將其賦值為3,再掃瞄一下新區域,只要還是0的區域的個數就是我門所要求的面積數。

最大的正方形

最大的正方形 描述 給你乙個n m的矩陣,每個位置的值是0或1,求乙個面積最大的子矩陣,這個矩陣必須是乙個正方形,且裡面只能由1構成,輸出最大的正方形邊長 執行時間限制 2 sec 記憶體限制 無限制 輸入 第一行輸入兩個整數n,m,之後n行,每行m個數字,為矩陣第i行第j列的值,只可能是0或者1 ...

理想的正方形

有乙個a x b的整數組成的矩陣,現請你從中找出乙個n x n的正方形區域,使得該區域所有數中的最大值和最小值的差最小。第一行為三個整數,分別表示a,b,n的值 第二行至第a 1行每行為b個非負整數,表示矩陣中相應位置上的數。輸出僅乙個整數,為axb矩陣中所有nxn正方形區域中的最大整數和最小整數的...

DP求最大正方形的邊長 hnust 1714

給定乙個n n的正方形,裡面有e 表示空地 f 表示被占有的地 求最大的正方形空地的邊長 用dp i j 表示以a i j 為右下角的最大正方形的邊長,注意 是以a i j 為右下角,也就是說a i j 必須是空的 只有當 這三個方向都是都為空時才能向外拓展,所以dp i j min dp i 1 ...