主题:[原创]给新手做练习的读程序题目---DFS
const maxn=15;
type arraytype=array [1..maxn*maxn,1..maxn*maxn] of byte;
var d,i,j,k,m,n,mind,nextp,t:longint;
p:array [1..maxn*maxn,1..2] of longint;
g:arraytype;
r:array [1..maxn,1..maxn] of longint;
v:array [1..maxn*maxn] of longint;
procedure dfs(k:longint);
var i:longint;
begin
if v[k]=0 then
begin
inc(t);
r[p[k,1],p[k,2]]:=t;
v[k]:=1;
for i:=1 to n*n do
if g[k,i]=1 then dfs(i)
end
end;
begin
write('Input n:');
readln(n);
k:=0;
for i:=1 to n do
for j:=1 to n do
begin
inc(k);
p[k,1]:=i;
p[k,2]:=j
end;
fillchar(g,sizeof(g),0);
for i:=1 to n*n-1 do
for j:=i+1 to n*n do
if abs((p[i,1]-p[j,1])*(p[i,2]-p[j,2]))=2
then begin g[i,j]:=1; g[j,i]:=1 end;
fillchar(v,sizeof(v),0);
t:=0;
dfs(1);
for i:=1 to n do
begin
for j:=1 to n do write(r[i,j]:4);
writeln
end;
end.
type arraytype=array [1..maxn*maxn,1..maxn*maxn] of byte;
var d,i,j,k,m,n,mind,nextp,t:longint;
p:array [1..maxn*maxn,1..2] of longint;
g:arraytype;
r:array [1..maxn,1..maxn] of longint;
v:array [1..maxn*maxn] of longint;
procedure dfs(k:longint);
var i:longint;
begin
if v[k]=0 then
begin
inc(t);
r[p[k,1],p[k,2]]:=t;
v[k]:=1;
for i:=1 to n*n do
if g[k,i]=1 then dfs(i)
end
end;
begin
write('Input n:');
readln(n);
k:=0;
for i:=1 to n do
for j:=1 to n do
begin
inc(k);
p[k,1]:=i;
p[k,2]:=j
end;
fillchar(g,sizeof(g),0);
for i:=1 to n*n-1 do
for j:=i+1 to n*n do
if abs((p[i,1]-p[j,1])*(p[i,2]-p[j,2]))=2
then begin g[i,j]:=1; g[j,i]:=1 end;
fillchar(v,sizeof(v),0);
t:=0;
dfs(1);
for i:=1 to n do
begin
for j:=1 to n do write(r[i,j]:4);
writeln
end;
end.