pascal 中的 exit 的文题 求教!
programhuanghou;varl:array[1..10]ofinteger;n:integer;p,q:array[1..20]ofinteger;x,y:ar...
program huanghou;
var
l:array[1..10] of integer;
n:integer;
p,q:array[1..20] of integer;
x,y:array[1..10] of integer;
procedure search(cnt:integer);
var
i,j:integer;
begin
if cnt>n then begin
writeln('answer:');
for i:=1 to n do writeln(x[i],',',y[i]);
exit;
end;
i:=cnt;
for j:=1 to n do begin
if (l[j]=0) and (p[i+j-1]=0) and (q[i-j+n]=0) then begin
l[j]:=1; p[i+j-1]:=1; q[i-j+n]:=1;
x[cnt]:=i; y[cnt]:=j;
search(cnt+1);
l[j]:=0; p[i+j-1]:=0; q[i-j+n]:=0;
end;
end;
end;
begin
read(n);
fillchar(l,sizeof(l),0);
fillchar(p,sizeof(p),0);
fillchar(q,sizeof(q),0);
search(1);
end.
这个八皇后的问题 ,呵呵 我主要想问一下 我自己编译的时候 是把所有情况都打印了出来,比如 n=4时 有两种方案, 但exit 不是直接退出过程吗? 展开
var
l:array[1..10] of integer;
n:integer;
p,q:array[1..20] of integer;
x,y:array[1..10] of integer;
procedure search(cnt:integer);
var
i,j:integer;
begin
if cnt>n then begin
writeln('answer:');
for i:=1 to n do writeln(x[i],',',y[i]);
exit;
end;
i:=cnt;
for j:=1 to n do begin
if (l[j]=0) and (p[i+j-1]=0) and (q[i-j+n]=0) then begin
l[j]:=1; p[i+j-1]:=1; q[i-j+n]:=1;
x[cnt]:=i; y[cnt]:=j;
search(cnt+1);
l[j]:=0; p[i+j-1]:=0; q[i-j+n]:=0;
end;
end;
end;
begin
read(n);
fillchar(l,sizeof(l),0);
fillchar(p,sizeof(p),0);
fillchar(q,sizeof(q),0);
search(1);
end.
这个八皇后的问题 ,呵呵 我主要想问一下 我自己编译的时候 是把所有情况都打印了出来,比如 n=4时 有两种方案, 但exit 不是直接退出过程吗? 展开
展开全部
这个。。我也遇到过这种情况,有时候exit只会退出1层,有时就全部退出去了。
procedure search(cnt:integer);
var
i,j:integer;
begin
if cnt>n then begin
writeln('answer:');
for i:=1 to n do writeln(x[i],',',y[i]);
end else begin
i:=cnt;
for j:=1 to n do begin
if (l[j]=0) and (p[i+j-1]=0) and (q[i-j+n]=0) then begin
l[j]:=1; p[i+j-1]:=1; q[i-j+n]:=1;
x[cnt]:=i; y[cnt]:=j;
search(cnt+1);
l[j]:=0; p[i+j-1]:=0; q[i-j+n]:=0;
end;
end;
end;
end;
可以把search过程改成这样。
不用exit应该不会出现问题了吧
procedure search(cnt:integer);
var
i,j:integer;
begin
if cnt>n then begin
writeln('answer:');
for i:=1 to n do writeln(x[i],',',y[i]);
end else begin
i:=cnt;
for j:=1 to n do begin
if (l[j]=0) and (p[i+j-1]=0) and (q[i-j+n]=0) then begin
l[j]:=1; p[i+j-1]:=1; q[i-j+n]:=1;
x[cnt]:=i; y[cnt]:=j;
search(cnt+1);
l[j]:=0; p[i+j-1]:=0; q[i-j+n]:=0;
end;
end;
end;
end;
可以把search过程改成这样。
不用exit应该不会出现问题了吧
富港检测技术(东莞)有限公司_
2024-05-27 广告
2024-05-27 广告
ISTA3E程序是对相同产品的集合包装的综合模拟性能测试,集合包装件被定义为将一个产品、多个产品或包装件放置在滑板或托盘上,固定在一起或是作为一个单元运输。例如:一台机器由带瓦楞底托的托盘上、瓦楞侧围、顶盖包装,用缠绕膜缠绕在托盘上。用于评...
点击进入详情页
本回答由富港检测技术(东莞)有限公司_提供
展开全部
在函数或者是过程中用exit,只会退出这个过程或函数,不是退出整个程序,多用几次是不行的,看看用label行不?
追问
label 是怎么用的哦?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不是,是退出一层递归调用。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询