感觉这道大一编程题有点变态
											
	
		
			
		
	
	
		
			
					
				
			输出“魔方阵”所谓魔方阵是指这样的方阵,它的每一行,每一列和对角线之和均相等。例如,三阶魔方阵为
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");
        }
    }
}我只是抛砖引玉罢了~运行三阶勉强还可以,运行四阶编译器就要崩溃了~

求各路大神能否帮帮忙解决这个难题
										
					
	
											

