free pascal 完全平方数
来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/06/23 07:07:17
free pascal 完全平方数
用1~9 组成三个三位数,每一个数的各个数位上的数都不一样(每行输出三个数,这三个数一共9位,都不能为相同数字).而且这三个三位数都是完全平方数.
用1~9 组成三个三位数,每一个数的各个数位上的数都不一样(每行输出三个数,这三个数一共9位,都不能为相同数字).而且这三个三位数都是完全平方数.
![free pascal 完全平方数](/uploads/image/z/3370310-62-0.jpg?t=free+pascal+%E5%AE%8C%E5%85%A8%E5%B9%B3%E6%96%B9%E6%95%B0)
这是结果:
361 529 784
361 784 529
529 361 784
529 784 361
784 361 529
784 529 361
下面是代码
var
u:array[1..9]of boolean;
a:array[1..9]of longint;
flag:boolean;
procedure dfs(x:longint);
var i:longint;
begin
if x>9 then
begin
flag:=true;
for i:=1 to 3 do
begin
x:=a[i*3-2]*100+a[i*3-1]*10+a[i*3];
if sqr(trunc(sqrt(x)))x then
begin
flag:=false;
break;
end;
end;
if flag then
writeln(a[1],a[2],a[3],' ',a[4],a[5],a[6],' ',a[7],a[8],a[9]);
exit;
end;
for i:=1 to 9 do
if not u[i] then
begin
u[i]:=true;
a[x]:=i;
dfs(x+1);
u[i]:=false;
end;
end;
begin
dfs(1);
end.
361 529 784
361 784 529
529 361 784
529 784 361
784 361 529
784 529 361
下面是代码
var
u:array[1..9]of boolean;
a:array[1..9]of longint;
flag:boolean;
procedure dfs(x:longint);
var i:longint;
begin
if x>9 then
begin
flag:=true;
for i:=1 to 3 do
begin
x:=a[i*3-2]*100+a[i*3-1]*10+a[i*3];
if sqr(trunc(sqrt(x)))x then
begin
flag:=false;
break;
end;
end;
if flag then
writeln(a[1],a[2],a[3],' ',a[4],a[5],a[6],' ',a[7],a[8],a[9]);
exit;
end;
for i:=1 to 9 do
if not u[i] then
begin
u[i]:=true;
a[x]:=i;
dfs(x+1);
u[i]:=false;
end;
end;
begin
dfs(1);
end.