您现在的位置是:首页 >精选问答 > 2024-06-13 02:50:08 来源:
pascal语言procedure(pascal语言程序设计)
大家好,我是小夏,我来为大家解答以上问题。pascal语言procedure,pascal语言程序设计很多人还不知道,现在让我们一起来看看吧!
要显示所有的方案的话就不用想别的了,就是要你搜索,没什么好算法.
怎么搜都一样了,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.
本文到此讲解完毕了,希望对大家有帮助。