永发信息网

求1-n*n之间的自然数构成的魔方阵怎么实现的,就是算法

答案:1  悬赏:0  手机版
解决时间 2021-04-21 06:36
  • 提问者网友:蔚蓝的太阳
  • 2021-04-21 00:01
不要代码,要的是用什么算法才能实现魔方阵,网上的看不懂,跪求一个能看明白的算法,不分奇数和偶数阶
最佳答案
  • 五星知识达人网友:三千妖杀
  • 2021-04-21 00:25

最简单的是穷举法,首先你要理解什么是递归,是怎么用的。



下面是伪代码,省略了很多细节和语法,不过关键步骤都在,这个会穷举全部可能性,如果得出结果就输出



写在执行函数里面调用下面的.


int[][] a=new int[n][n]; //放个2维数组表示魔方,默认值设为0


input(a,1); //调用递归函数



然后要写一个递归函数,就是依次放数


function input(int[][]a,int num)


{


if (num>n*n) // 运行到头了,该判断了


{


如果横竖斜和相等,输出,并退出


否则退出


}


else {


for (int i=0;i<n;i++)


for (int j=0;j<n;j++)


{


//循环n*n次,保证便利每个格


if (a[i][j]==0) //这个格还没填数


{


//创建个新的存储器,把当前要填的这个数填在这个格子里面,然后调用递归,填下一个数


newA=a;


newA[i][j]=num;


input(newA,num+1);


}


else


continue; //这格有数了,找下一个空格


}



}


}

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯