主题:中国象棋
6yangweihua
[专家分:180] 发布于 2005-06-21 19:02:00
中国象棋的马从半张棋盘的左下角跳到右上角,如果规定只许往右跳,打印出所有的解
回复列表 (共5个回复)
沙发
dhytxz [专家分:0] 发布于 2005-07-12 22:47:00
递归回溯
板凳
口口and枕头 [专家分:1550] 发布于 2005-07-17 19:46:00
楼上的说了也明说....
知道怎么递归回溯就不用问了~~~~~
你说是吗??
3 楼
delphi6 [专家分:3450] 发布于 2005-07-18 17:41:00
看看...
4 楼
SimplePanda [专家分:0] 发布于 2005-07-20 12:58:00
这题用递归回溯不死人才怪呢!
用递推不就很快OK了吗?
5 楼
sd5774188 [专家分:260] 发布于 2005-07-25 22:02:00
楼上的真“厉害”……我的程序:
program yb(input,output);
const walkx:array[1..4]of integer=(-2,-1,1,2);
walky:array[1..4]of integer=(1,2,2,1);
var way:array[1..5,1..9]of integer;
s:integer;
procedure search(x,y:integer);
procedure print;
var i,j:integer;
begin
way[1,9]:=1;
for i:=1 to 5 do begin
for j:=1 to 9 do
if way[i,j]=1 then
write('*',' ')
else
write('.',' ');
writeln;
end;
writeln;
inc(s);
end;
var i,x1,y1:integer;
begin
if (x=1)and(y=9) then print else
for i:=1 to 4 do
begin
x1:=x+walkx[i];
y1:=y+walky[i];
if (x1<=5)and(x1>=1)and(y1>=1)and(y1<=9)and(way[x1,y1]=0)then
begin
way[x1,y1]:=1;
search(x1,y1);
way[x1,y1]:=0;
end;
end;
end;
begin
s:=0;
fillchar(way,sizeof(way),0);
way[5,1]:=1;
search(5,1);
writeln('Total=',s);
end.
我来回复