问: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(财富值+成长值)
gcbjoy
2016-04-26 · TA获得超过1.1万个赞
知道大有可为答主
回答量:1.1万
采纳率:92%
帮助的人:2186万
展开全部
可以用一维数组解此问题
追问
我知道可以,但是不会,能把代码写出来么,谢谢啦
追答
递归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
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式