pascal一道编程问题??

来源:百度知道 编辑:UC知道 时间:2024/05/17 13:27:04
Description

[问题描述]:一年一度的NOIP马上举行了,今年重庆赛区的比赛地点在我们巴蜀中学,上午津津很早都来到了比赛地点,她才发现普及组是在下午才考试,于是她上午没有事情干,怎么办?于是她决定找点有意义的事情来干,她正走着碰到了教她的信息学老师。
老师给他出了一个这样的问题:“在n*n的方格地盘中,种植树,每个方格中最多只能够种一棵,问要使每行、每列都有k颗树,请你求出所有可能的种植方案总数?。(1 <= k <= n <= 6)”。

Input

一行分别为n,k中间用空格隔开

Output

可能的种植方案总数

Sample Input

2 1

Sample Output

2
请大家帮帮我,很急的!!!谢谢!!

我弄到了标准程序,如下:
var
a: array[1..10,1..10] of byte;
t:longint;
m,n,k:integer;
h,z : array[1..10] of byte;
procedure sub(s,x,e : byte);
var
y,i,j : byte;
begin
if s > m then inc(t)
else for y:=e to n do
if (a[x,y]=0) and (h[x]<k) and (z[y]<k) then
begin
a[x,y] := 1; inc(h[x]); inc(z[y]);
if s mod k=0 then sub(s+1,x+1,1)
else sub(s+1,x,y+1);
a[x,y] := 0;
dec(h[x]);
dec(z[y]);
end;
end;
begin
read(n,k);
t:= 0;
fillchar(a,sizeof(a),0);
fillchar(h,sizeof(h),0);
m:=n*k;
z:=h;
sub(1,1,1);
writeln(t);
end.

要使每行、每列都有k颗树,1 <= k <= n <= 6
你的题目我看不懂。按我的理解有矛盾。
Sample Input
2 1
n=2,k=1,怎么能使每行每列都有1棵树呢?
是不是1 <=