一个幻方的问题

askbillaskbill 2005-10-14 05:10:02
幻方是一个奇数阶矩阵,每个元素值不同,且每一行之和,还是每一列之和,还是左对角线之和,还是 右对角线之和,都是同一个数。编写一个程序验证输入的3阶矩阵是否为幻方。以下为两组验证数据:
4 9 2 47 113 17
3 5 7 29 59 89
8 1 6 101 5 71
这个问题应该怎么思考呢?
...全文
157 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lkjx083 2005-10-16
  • 打赏
  • 举报
回复
我觉得存入不难啊,InputStream的read(byte[]b,int off,int len)就可以解决啊,不知道对不对,请指教
askbillaskbill 2005-10-14
  • 打赏
  • 举报
回复
wind198299说的很对,问题的关键在于你如何将这些数字存入到二维数组里面.
wind198299的程序好象有点深哦

wind198299 2005-10-14
  • 打赏
  • 举报
回复
行跟列和对角线的和是否相等,这个谁都可以看得出来的呀,呵呵~~~

问题的关键在于你如何将这些数字存入到二维数组里面
believefym 2005-10-14
  • 打赏
  • 举报
回复
楼上这位老兄答非所问,楼主问判断是否是幻方矩阵的算法呢

其实这个问题很好解决,算法一点不难,就是行跟列和对角线的和是否相等的问题,楼主自己写写吧
wind198299 2005-10-14
  • 打赏
  • 举报
回复
//这算法用文字解释好难说清,呵呵,不好意思,我只写出啦,具体程序~
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();
}
}
}

62,624

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧