您现在的位置是:首页 >精选问答 > 2024-06-13 02:50:08 来源:

pascal语言procedure(pascal语言程序设计)

导读 大家好,我是小夏,我来为大家解答以上问题。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.

本文到此讲解完毕了,希望对大家有帮助。