感觉这道大一编程题有点变态
输出“魔方阵”所谓魔方阵是指这样的方阵,它的每一行,每一列和对角线之和均相等。例如,三阶魔方阵为
8 1 6
3 5 7
4 9 2
要求输出1~n的平方的自然数构成的魔方阵
我用了一种最笨但理论上也是最傻瓜式的暴力穷举法,把程序改进一下就能求任意阶的了~(理论上)
具体代码如下:
程序代码:
#include<stdio.h> int main() { int a[10]={1,1,1,1,1,1,1,1,1,0}; int i,j,count; for (count=0;a[9]<1;count=0) { while (a[count]>=9) { a[count]=0; count++; } a[count]++; for (i=j=0;i<9;i=i+3,j++) { if (a[i]+a[i+1]+a[i+2]!=15||a[j]+a[j+3]+a[j+6]!=15) i=7; } if (a[0]+a[4]+a[8]!=15||a[2]+a[4]+a[6]!=15) i=10; if (i==9) { for (i=0;i<9;i++) printf("%d ",a[i]); printf("\n"); } } }
我只是抛砖引玉罢了~运行三阶勉强还可以,运行四阶编译器就要崩溃了~
求各路大神能否帮帮忙解决这个难题