pascal方格稿纸
方格稿紙
時間限制: 1 Sec 內存限制: 128 MB
題目描述
小豬在小學中認識了很多的字,終于會寫一點作文了。某天小豬買了一張方格稿紙來寫作文,n行m列,形狀如下所示:
上圖中n=m=5。
某天小豬的鄰居小小豬來小豬家玩,用黑墨水筆把小豬新買的方格稿紙涂黑了很多格子。每個格子不是完全黑色就是完全白色,如下圖所示。
小豬不能責怪小小豬。作文寫不成了,他覺得很無聊,就開始數里面有多少魔幻方陣。
如果稿紙中一個k×k的正方形區域滿足以下兩個條件,那么它就是魔幻方陣:
1.黑白格子的數量差不能超過1;
2.k不能小于2。
上圖染色后的方格稿紙共有9個魔幻方陣(6個2×2的魔幻方陣,3個3×3的魔幻方陣),現在請你幫小豬求出他被染色的稿紙里面有多少個魔幻方陣。
輸入
第一行有二個正整數n和m(互相之間以一個空格分隔),表示稿紙共有n行m列。
接下來n行,每行有m個0或1的整數(互相之間以一個空格分隔),代表每個格子的顏色。如果這個數是1則為黑色,是0則為白色。
輸出
僅有一行,該行只有一個整數,表示稿紙中魔幻方陣的個數。
樣例輸入
5 5 1 0 1 1 1 1 0 1 0 1 1 1 0 1 1 1 0 0 1 1 1 1 1 1 1
樣例輸出
9
提示
【數據規模】
50%的數據,1≤n≤10,1≤m≤10;
75%的數據,1≤n≤180,1≤m≤180;
100%的數據,1≤n≤300,1≤m≤300。
Pascal Code
varf,a:array[0..300,0..300] of longint;n,m,i,j,k,black,white,total:longint;function min(x,y:longint):longint; beginif x>y then exit(y);exit(x); end;beginreadln(n,m);total:=0;for i:=1 to n dofor j:=1 to m dobeginread(a[i,j]);f[i,j]:=f[i,j-1]+f[i-1,j]-f[i-1,j-1]+a[i,j];end;for k:=2 to min(n,m) dofor i:=k to n dofor j:=k to m dobeginblack:=f[i,j]-f[i,j-k]-f[i-k,j]+f[i-k,j-k];white:=k*k-black;if abs(black-white)<=1 theninc(total);end;writeln(total); end.總結
以上是生活随笔為你收集整理的pascal方格稿纸的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 最难忘的一节计算机课,写最难忘的一节课作
- 下一篇: VS2013 配置wincap开发环境