幻方是一个奇数阶矩阵,每个元素值不同,且每一行之和,还是每一列之和,还是左对角线之和,还是 右对角线之和,都是同一个数。编写一个程序验证输入的3阶矩阵是否为幻方。以下为两组验证数据:
4   9   2                    47     113      17
3   5   7                    29      59      89 
8   1   6                    101     5       71 
这个问题应该怎么思考呢?

解决方案 »

  1.   

    //这算法用文字解释好难说清,呵呵,不好意思,我只写出啦,具体程序~
    public class Magic 
    {

    /**
     * Method main
     *
     *
     * @param args
     *
     */
    public static void main(String[] args) 
    {
    // TODO: Add your code here
    final int SIZE=3;
    int mat[][]=new int [SIZE][SIZE];
    int i=0,j,k,n;
    n=SIZE;
    j=n/2;
    for(k=1;k<=n*n;k++)
    {
    mat[i][j]=k;
    if(k%n==0)
    {
    i=(i+1)%n;
    }
    else
    {
    i=(i-1+n)%n;
    j=(j+1)%n;
    }
    }
    for(i=0;i<n;i++)
    {
    for(j=0;j<n;j++)
        System.out.print(mat[i][j]+"\t");
    System.out.println();
    }
    }
    }
      

  2.   

    wind198299说的很对,问题的关键在于你如何将这些数字存入到二维数组里面.
    wind198299的程序好象有点深哦
      

  3.   

    我觉得存入不难啊,InputStream的read(byte[]b,int off,int len)就可以解决啊,不知道对不对,请指教