求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; //这格有数了,找下一个空格
}
}
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯