社区
数据结构与算法
帖子详情
谁有好办法找出所有四阶自然数幻方啊!
smdesker
2003-12-21 12:33:08
谁有好办法找出所有四阶自然数幻方啊!还有,四阶的到底有什么个有人知道吧。。。急啊。。。
...全文
61
14
打赏
收藏
谁有好办法找出所有四阶自然数幻方啊!
谁有好办法找出所有四阶自然数幻方啊!还有,四阶的到底有什么个有人知道吧。。。急啊。。。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
smdesker
2003-12-27
打赏
举报
回复
找到yaos以前的贴子。。呵呵谢了。
/*我来贴一个我求4阶幻方总数的程序,运行结果7040*/
/*速度很快,用时不到1s*/
/*还有很大的优化余地*/
#include <stdio.h>
int p[100][4],l=0,t=0;
int q[4],p4[30][4];
long total=0;
int board[4][4];
unsigned long s[100];
void finalJudge()
{
int i,j,k,m,x,y;
for (i=0;i<24;i++)
{
for (j=0;j<24;j++)
{
for (k=0,x=0,y=0;k<4;k++)
{
x+=board[p4[i][k]][p4[j][k]];
y+=board[p4[i][3-k]][p4[j][k]];
}
if (x==34 && y==34)
{
total++;
for (k=0;k<4;k++,printf("\n"))
for (m=0;m<4;m++)
printf("%2d ",board[p4[i][k]][p4[j][m]]);
printf("\n");
}
}
}
}
void construct()
{
int i,j,k,m,x[4];
for (i=0;i<24;i++)
{
for (j=0;j<24;j++)
{
for (k=0;k<4;k++)
{
x[k]=34-p[q[0]][k]-p[q[1]][p4[i][k]]-p[q[2]][p4[j][k]];
board[3][k]=x[k];
if (x[k]<1 || x[k]>16 || !((1l<<(x[k]-1)) & s[q[3]])) break;
for (m=0;m<k;m++)
if (x[m]==x[k]) break;
if (m<k) break;
}
if (k==4)
{
for (k=0;k<4;k++)
board[0][k]=p[q[0]][k];
for (k=0;k<4;k++)
board[1][k]=p[q[1]][p4[i][k]];
for (k=0;k<4;k++)
board[2][k]=p[q[2]][p4[j][k]];
finalJudge();
}
}
}
}
void make(int b,int deep)
{
int i,j,sum;
if (deep>=4)
{
for (j=0,sum=0;j<4;j++)
sum+=(p[l+1][j]=p[l][j]);
if (sum==34)
{
for (j=0,s[l]=0;j<4;j++)
s[l]+=1l<<(p[l][j]-1);
l++;
}
return;
}
for (i=b;i<=16;i++)
{
p[l][deep]=i;
make(i+1,deep+1);
}
}
void makeP44(int deep){
int i,j,flag;
if (deep>=4)
{
for (j=0;j<4;j++)
p4[t+1][j]=p4[t][j];
t++;
return;
}
for (i=0;i<4;i++)
{
p4[t][deep]=i;
flag=1;
for (j=0;j<deep;j++)
if (p4[t][j]==i) flag=0;
if (flag) makeP44(deep+1);
}
}
void solve(int b,int deep)
{
int i,j,flag;
if (deep>=4)
{
construct();
return;
}
for (i=b;i<l;i++)
{
q[deep]=i;
flag=1;
for (j=0;j<deep;j++)
if (s[q[j]] & s[i]) flag=0;
if (flag) solve(i+1,deep+1);
}
}
main(){
/*freopen("1.txt","w",stdout);*/
make(1,0);
makeP44(0);
solve(0,0);
printf("total=%ld\n",total);
}
ilao
2003-12-23
打赏
举报
回复
好多E文!
呵呵
Linevan
2003-12-22
打赏
举报
回复
http://hades.ph.tn.tudelft.nl/Internal/PHServices/Documentation/MathWorld/math/math/m/m029.htm
有好的方法!
ZhangYv
2003-12-22
打赏
举报
回复
精华区有
ilao
2003-12-22
打赏
举报
回复
偶数的
的我也说不清楚
ilao
2003-12-22
打赏
举报
回复
奇数阶的是1在第一行中间
后2在最后一行对角向上排的
到右边后转下
下有数就转左
8 1 6
3 5 7
4 9 2
zalyer
2003-12-22
打赏
举报
回复
你去搜索一下一个叫"龙怪"的网站是一个台湾人搞的,就是对方阵的研究,有很多算法和奇妙的方阵.
yaos
2003-12-22
打赏
举报
回复
还要做一个纪录被使用的数字的模版,每组4个数字也纪录,用二进制与 很容易判断没有使用的数字
yaos
2003-12-22
打赏
举报
回复
比如:
(1,1)+(1,2)+(2,1)+(2,2) = (3,3)+(3,4)+(4,3)+(4,4)
等等
yaos
2003-12-22
打赏
举报
回复
880个
我在386上曾经作过,现在程序不知道扔到什么地方去了。 :)
很快的。不到10分钟。386sx25
现在的计算机,就更快了。
原理是:找到所有的4个数字组合等于(1+16)*16/2/4 = 34,一共1000多,然后
填出前两行,后边的用排除法,很容易填的
因为4阶的规律性太强了,要做做5阶的,很难。
smdesker
2003-12-21
打赏
举报
回复
大哥,我说是所有的啊。。。如何找出来才好。一二个的我多的是,我找了几千了。
还有谁知道总数是多少个啊。。。。可以再加分的。
ilao
2003-12-21
打赏
举报
回复
横向相加为15
纵向相加为15
对角相加为15
ilao
2003-12-21
打赏
举报
回复
四阶自然数幻方
为4*4啦
我写个3*3的
6 1 8
7 5 3
2 9 4
横纵向对角联合相加为15
ilao
2003-12-21
打赏
举报
回复
1 2 3 ............n*n
横纵向对角联合相加为
ns=n*n(n*n+1)/2
所以S=n(n*n+1)/2
这为阶
2015秋七年级数学上册探寻神奇的
幻方
学案无答案新版北师大版
杨辉法是构造三阶
幻方
的一种常见方法,通过口诀“九子斜排,上下对易,左右相更,四维挺出”,学生可以按照特定步骤来构建
幻方
,这有助于他们掌握
幻方
构造的技巧。 在“学以致用”环节,学生需要利用给定的数列,如...
小学数学数学故事探险故事荒岛历险24321号房间在哪儿
罗克提到的5阶
幻方
是一个5x5的矩阵,需要填入从1到25的
自然数
,使得每一行、每一列以及两条对角线上的数字之和相等。在这个特定的情况下,我们并不需要完成整个
幻方
,而是需要找到剩余9个数中4对相加为26的数,然后...
Matlab与数学建模综合练习3 (2).docx
四阶
素数
幻方
需要找到一个4x4的矩阵,其中每行、每列和对角线上的数字构成的四位数都是可逆素数。这需要对所有可能的排列进行检查,确保满足条件。 10. 赛跑游戏: 这是一个逻辑问题,根据得分规则和已知条件,...
Matlab与数学建模综合练习3.docx
10. 素数
幻方
:
四阶
素数
幻方
需要找到四个数字,每个数字的反转也是素数,且四行四列及两条对角线上的数字构成的数都是素数。这个问题可以通过穷举和素数检测算法来解决。 11. 赛跑游戏:根据得分规则和已知信息,...
二年级经典奥数100题.doc
28. 三阶
幻方
:填数字使得每行、每列和对角线上的数字和相等。 29. 奇偶数筛选:根据双数的特点筛选人数。 30. 相对位置与距离:理解前后跳动的相对位置和净距离。 31. 简单加减法:通过加减法
找出
弟弟原有的铅笔...
数据结构与算法
33,028
社区成员
35,336
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章