| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1143 人关注过本帖
标题:3阶幻方问题
只看楼主 加入收藏
huhanlinhhl
Rank: 1
等 级:新手上路
帖 子:72
专家分:0
注 册:2008-10-26
结帖率:100%
收藏
 问题点数:0 回复次数:2 
3阶幻方问题
就是3*3的格子里 填入123456789 使得横竖斜之和都等于15
怎么用代码实现
我连用纸写都不知道咋写!!!
求教各位大侠
搜索更多相关主题的帖子: 格子 
2009-11-19 19:42
hyfl
Rank: 7Rank: 7Rank: 7
来 自:火星
等 级:黑侠
帖 子:113
专家分:552
注 册:2008-11-20
收藏
得分:0 
这个问题已经有了现成的模型解法,详细的可以看以下链接,不赘述了
http://baike.baidu.com/view/325330.html?fromTaglist

“一切高手都是从菜鸟炼成的!”1099285180@
2009-11-19 21:09
caojulians
Rank: 2
等 级:论坛游民
帖 子:39
专家分:67
注 册:2009-11-15
收藏
得分:0 
看到还有人在研究幻方问题,就把十多年前的习作给大家看看----献丑了。
对任意的奇数阶幻方,设阶数为n,将1至n*n的自然数填入幻方中,使每一行、每一列、主、辅对角线元素之和相等。
一.    先说幻方生成部分的伪代码(其余验证及输出就很简单了):
1.    将k=1填入最上一行的中间位置;
2.    k从2到n*n,依次做:
2.1. 若k为n的整数倍加1,则将k填入前一个数的正下方,否则填入前一个数右上方;
2.2. 若2.1.操作的位置不在幻方范围内,则将操作位置改在同一行(或同一列)的另一端。

二.    核心代码
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  int n;    /*阶数*/
  int k=1;  /*自然数:1…n*n*/
  int row,  col;  /*幻方的行号与列号*/
  int m[25][25];   /*幻方阵列*/
  scanf( "%d",  &n);
  if(n % 2 == 0)
      n++;      /*保证n是奇数*/
  if( n>=25)
    n=25;     /*太大的幻方输出有些困难,控制在25阶之内*/
  printf("\n n=%d",n);
  m[row=0][col=n/2] = k;  /*最上一行中间一列填入1*/
  for( k=2; k<=n*n; k++)
  {
      if( k%n == 1)         /*k是n的整数倍加1*/
      {
          row=(row+1)%n;   /*填入位置是正下方,若出范围填入最上一行*/
      }
      else
      {
          row=(row-1+n)%n;   /*填入位置是右上方,若出行范围填入最下一行*/
          col=(col+1)%n;      /*填入位置是右上方,若出列范围填入最左一列*/
      }
      
      m[row][col]=k;
  }
  
  for(row=0; row<n; row++)
  {
      printf("\n");
      for(col=0; col<n; col++)
          printf("%4d",m[row][col]);
  }
  printf("\n");
  system("PAUSE");   
  return 0;
}

三.    游戏之作(循环体中只有一句,若无二部分铺垫,估计能看懂的人不多)
m[row=0][col=n/2]=k=1;
for(k=0; k<n*n; k++)
    m[row=(k%n==1)? (row+1)%n: (row-1+n)%n][col=(k%n==1)? col:(col+1)%n]=k;

2009-11-24 17:14
快速回复:3阶幻方问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.124712 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved