幻方判断

给定一个nxn阶矩阵,如何判断是否幻方。所谓幻方的定义是nxn阶矩阵的每行,每列,对角线之和相等;
如下图所示:

image

 

现在的问题是给定一个nxn阶矩阵,如何决断是否幻方? 
代码显示:

#include <stdio.h>

#include <stdlib.h>



int main()

{

    int table[4][4]={{16,2,3,13},{5,11,10,8},{9,7,6,12},{4,14,15,1}};

    int colsum[4]={0},rowsum[4]={0},diagsum=0,tmpsum=0;

    int i=0,j=0;



    for(i=0;i<4;i++)

    {

    for(j=0;j<4;j++)

    {

        colsum[i]+=table[j][i];

        rowsum[i]+=table[i][j];

        if(i+j==3)

        {

        diagsum+=table[i][j];

        }

        if(i==j)

        {

        tmpsum+=table[i][j];

        }

    }

    }



    for(i=0;i<4;i++)    

    {

    printf("colsum[%d]:%d\n",i,colsum[i]);

    printf("rowsum[%d]:%d\n",i,rowsum[i]);

    printf("diagsum:%d\n",diagsum);

    printf("tmpsum:%d\n",tmpsum);





    }

    return 1;

} 

在处理过程中遇到一个问题,那就是如果定义数给,没有指定数组大小,但是有初始化。那个数组的大小就为初始化的大小.
如上黑体部分显示:rowsum[]={0}, 那么这个数组就是一维的。

关于如何构造幻方,最后归结为数学问题。就不研究了.

你可能感兴趣的:(判断)