问:3*3三阶魔方阵 用数组求一个3*3的三阶魔方 三阶魔方阵: 8 1 6 3 5 7 4 9
问:3*3三阶魔方阵用数组求一个3*3的三阶魔方三阶魔方阵:816357492我想用一维数组求这道题,有没有大神能解决...
问:3*3三阶魔方阵 用数组求一个3*3的三阶魔方 三阶魔方阵: 8 1 6 3 5 7 4 9 2
我想用一维数组求这道题,有没有大神能解决 展开
我想用一维数组求这道题,有没有大神能解决 展开
- 你的回答被采纳后将获得:
- 系统奖励15(财富值+成长值)+难题奖励20(财富值+成长值)
1个回答
展开全部
可以用一维数组解此问题
追问
我知道可以,但是不会,能把代码写出来么,谢谢啦
追答
递归pascal程序:
type
status=array[1..9] of boolean;
intar=array[1..9] of integer;
var
i,j,k:integer;
a:intar;
s:status;
num:longint;
procedure next(k:integer;a:intar;s:status);
var
p,q:integer;
find:boolean;
begin
if k<=9 then begin
for p:=1 to 9 do
if not s[p] then begin
s[p]:=true;
a[k]:=p;
next(k+1,a,s);
s[p]:=false;
{a[k]:=0; }
end;
end
else
if k>9 then begin
find:=false;
if a[1]+a[2]+a[3]<>15 then find:=true;
if a[4]+a[5]+a[6]<>15 then find:=true;
if a[7]+a[8]+a[9]<>15 then find:=true;
if a[1]+a[4]+a[7]<>15 then find:=true;
if a[2]+a[5]+a[8]<>15 then find:=true;
if a[3]+a[6]+a[9]<>15 then find:=true;
if a[1]+a[5]+a[9]<>15 then find:=true;
if a[3]+a[5]+a[7]<>15 then find:=true;
if not find then begin
inc(num);
for p:=1 to 9 do write(a[p]:2); writeln;
end;
end;
end;
begin
num:=0;
for i:=1 to 9 do s[i]:=false;
for i:=1 to 9 do a[i]:=0;
next(1,a,s);
writeln('total=',num);
end.
2 7 6 9 5 1 4 3 8
2 9 4 7 5 3 6 1 8
4 3 8 9 5 1 2 7 6
4 9 2 3 5 7 8 1 6
6 1 8 7 5 3 2 9 4
6 7 2 1 5 9 8 3 4
8 1 6 3 5 7 4 9 2
8 3 4 1 5 9 6 7 2
total=8
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询