系统粉 > 电脑问答 > 其他问答

已解决魔方阵

提问者:苏乃晴  |  浏览次  |  提问时间:2017-03-19  |  回答数量:7

魔方阵 魔方阵一个n*n维数组,存放1,2,3。。。。n*n使得每行,每列,对角线之和都相等如3*3的8 1 63 5 74 9 24*4的13 3 2 16 5 11 8 1012  6 9 7 4 14 15 1有谁能给个算法,我想了好几天也没弄出来

已有7条答案
不能吃豆腐_

不能吃豆腐_

回答数:109  |  被采纳数:17

http://zhidao.baidu/question/6094228.html
2017-03-19 06:55:48
赞 10
tianyu66170553

tianyu66170553

回答数:185  |  被采纳数:84

以前砸门论坛中有过这题阿。。我看看怎么编了着?
2017-03-19 08:50:26
赞 18
_夜魇丶

_夜魇丶

回答数:170  |  被采纳数:46

那个网上的只有奇数的魔方阵有用,而偶数就没有算出来
2017-03-19 13:09:00
赞 17
怪盗小子1996

怪盗小子1996

回答数:151  |  被采纳数:139

我记得以前曾经有个高手给我指导过这题,用的是一个印度那边的算法,等我找找~
2017-03-19 16:07:48
赞 15
漠漠无烟

漠漠无烟

回答数:167  |  被采纳数:3

也是只能解出奇数魔方的情况,偶数的似乎是没法解的,没有中间数,存在对称性,超出研究范围了。#include<stdio.h>#include<conio.h>#include<stdlib.h>main(){ int a,n,num,t,i,j,m,sum; int**arr; FILE *fp; if((fp=fopen("record.txt","w+"))==NULL) { printf("cannot open the file!!!"); exit(0); } again: printf("n=");scanf("%d",&n);if(!(n%2)) {puts("please input an odd!\n"); goto again; } fprintf(fp,"n=%d\n",n); a=n+n/2*2; if((arr=(int**)malloc(a*sizeof(int*)))==NULL) { puts("no memory left!!\n"); exit(1); } for(i=0;i<a;i++) if((arr[i]=(int*)malloc(a*sizeof(int)))==NULL) { puts("no memory left!!\n"); exit(1); } for(i=0;i<a;i++) for(j=0;j<a;j++) arr[i][j]=0; num=1; t=0; for(i=a-n;i<a;i++,t++) { m=t; for(j=i;j>i-n;j--,num++,m++) { arr[j][m]=num; if(j<=n/2) arr[j+n][m]=num; else if(j>=(n+n/2)) arr[j-n][m]=num; else if(m<=n/2) arr[j][m+n]=num; else if(m>=(n+n/2)) arr[j][m-n]=num; } } sum=0; for(i=n/2;i<n/2+n;i++) { for(j=n/2;j<n/2+n;j++) {printf("%5d",arr[i][j]); fprintf(fp,"%5d",arr[i][j]); } puts("\n\n"); fprintf(fp,"\n\n"); }for(i=n/2;i<n/2+n;i++)sum+=arr[n/2][i]; printf("sum=%d\n",sum); fprintf(fp,"sum=%d\n",sum); free(arr); fclose(fp); getch(); }复制代码

(1)

(2)

(3)

2017-03-19 15:34:29
赞 16
癫狂_y

癫狂_y

回答数:183  |  被采纳数:72

谢了!!!!困惑我N天的程序终于弄懂了......
2017-03-19 18:24:18
赞 18
我就一个人好了

我就一个人好了

回答数:51  |  被采纳数:137



自己想出来的?
2017-03-19 12:59:39
赞 5
相关问答
最新其他问答
解决方法