一道简单的FREE PASCAL 题目 希望大牛来解答

来源:百度知道 编辑:UC知道 时间:2024/06/24 13:44:54
A城是矩形平原,B君在上面修建一些建筑,为了规划方便,他将矩形划分成N*M格。
有部分神庙分布在格子内,建筑选址时必须避开神庙。新建的建筑物有P种规格,每种建筑物都是正方形,占地为Ti*Ti(1<=i<=p)。
b君想知道对于每种规格的建筑物,有多少种不同的合格选址方案(合适的选址方案是指该建筑所占的正方形内不存在神庙)。这个光荣的任务交给你来完成了
输入格式: 第一行包括三个数,分别代表 N,M,P(1<=n,m<=2000,1<=p<=1000)。
随后的n行,每行有m个0或1(1表示该格为废墟,0表示该格有神庙)。
接下来的P行每行有一个整数X(1〈X〈=max(M,N),
代表的第i种建筑物的边长
输出文件有P行,每行一个整数,第i行的数代表边长为Ti的建筑物的选址方案数。
样例输入
4 4 2
1011
1111
1110
1110
2
3
样例输出
5
1
要有 具体的步骤和过程 谢谢大家拉 如果对了就奖励50分

简单?
program building;
var n,m,p,i,j,c,k:longint;s:array [1..maxsize] of integer;a:array [1..maxsize] of array [1..maxsize] of integer;
begin
assign(input,'building.in');
assign(output,'building.out');
reset(input);
rewrite(output);
readln(n,m,p);
for i=1 to n
begin
for j=1 to m do read(a[m][n]);
readln;
end;
for i=1 to p do readln(s[p]);
for i=1 to p
begin
for j=1 to m-s[p]+1
begin
for k=1 to n-s[p]+1
唉,懒得写了!