PASCAL问题:小镇旅行

发布时间:2024-11-05 14:45 发布:上海旅游网

问题描述:

一个正方形的小镇被分成N2个小方格,Betsy要从左上角的方格到达左下角的方格,并且经过每个方格恰好一次。编程对于给定的N,计算出Betsy能采用的所有的旅行路线的数目。

问题解答:

bs楼上德~~只知道复制~~
这道题是深搜~~递归搜索
我自己编过
我的程序:
const a:array[1..4,1..2] of integer=((1,0),(-1,0),(0,1),(0,-1));
var i,j,k,n,x,y,t:longint;
a1:array[1..11,1..11] of longint;
procedure cut1
procedure sub(n1,x,y:integer);
var i1,j1,k1,t:longint;
boo:boolean;
begin
boo:=true;
for i1:=1 to n do
for j1:=1 to n do if a1[i1,j1]=0 then boo:=false;

if boo then t:=t+1;
for i1:=1 to 4 do begin
if a1[x+a[i1,1],y+a[i1,2]]=0 then begin
n1:=n1+1;
x:=x+a1[i1,1];
y:=y+a1[i1,2];
sub(n1,x,y);
n1:=n1-1;
x:=x-a[i1,1];
y:=y-a[i1,2];
end;
end;
end;
begin
readln(n);
fillchar(a1,sizeof(a1),0);

sub(1,0,0);
writeln(t);
end.

wind_teller!我表明了参考资料,又没人回答,你bs我做什么...

如果没记错的话,这是哈密顿图,直接用哈密顿图的解法就可以了。

热点新闻