Pascal语言程序设计

要在6×6=36个方格中放入24个相同的小球,每格中放一个,并且每行或每列都有4个球(不考虑对角线)设计一个程序,并能输出结果(用1表示有球,应0表示无球)。显示出所有方... 要在6×6=36个方格中放入24个相同的小球,每格中放一个,并且每行或每列都有4个球(不考虑对角线)设计一个程序,并能输出结果(用1表示有球,应0表示无球)。显示出所有方案及数量。 展开
 我来答
Many_question
2012-07-18 · TA获得超过2853个赞
知道大有可为答主
回答量:2040
采纳率:66%
帮助的人:2334万
展开全部
要显示所有的方案的话就不用想别的了,就是要你搜索,没什么好算法.
怎么搜都一样了,dfs可能好写一点.
或许也有构造法吧?...让我想想

.-----
想不到了,搜吧.答案有6万多个,我把print注释掉了.

var ans:longint;
state:array[1..6,1..6]of byte;
num:array[1..6]of byte;
function suc():boolean;
var i:integer;
begin
for i:=1 to 6 do
if(num[i]>4)then
exit(false);
exit(true);
end;
procedure print();
var i,j:integer;
begin
for i:=1 to 6 do begin
for j:=1 to 6 do
write(state[i,j]);
writeln;
end;
end;
procedure fill(dep:integer);
var i:integer;
begin
for i:=1 to 6 do
state[dep,i]:=1;
end;
procedure search(dep:integer);
var i,j:longint;
begin
if(dep>6)then begin
if(suc())then begin
//print();
inc(ans);
end;
exit;
end;
fill(dep);
for i:=1 to 5 do begin
for j:=i+1 to 6 do begin
state[dep,i]:=0;
state[dep,j]:=0;
dec(num[i]);
dec(num[j]);
search(dep+1);
inc(num[i]);
inc(num[j]);
state[dep,i]:=1;
state[dep,j]:=1;
end;
end;
end;
begin
fillchar(num,sizeof(num),6);
ans:=0;
search(1);
writeln(ans);
end.
匿名用户
2012-07-18
展开全部
。。。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
susky
2012-07-22 · 超过31用户采纳过TA的回答
知道答主
回答量:448
采纳率:100%
帮助的人:144万
展开全部
不会
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
舜采春吕雍
2019-06-13 · TA获得超过3.1万个赞
知道大有可为答主
回答量:1.2万
采纳率:33%
帮助的人:648万
展开全部
语句结束要有分号,即使在同一行内
比如第一行应该是这样:a:=32/2;b=32/2;c:=32/2;d:=32/2;e:=32+a+b+c+d
你这个程序到底是什么意思啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式