Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2507255
  • 博文数量: 308
  • 博客积分: 5547
  • 博客等级: 大校
  • 技术积分: 3782
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-24 09:47
个人简介

hello world.

文章分类

全部博文(308)

分类: C/C++

2011-04-13 17:35:08

    有一种方阵被称为“魔幻方阵”。所谓魔幻方阵是指n*n的矩阵中填写1-n*n这n*n个数字,使得它的每一行,每一列以及两个对角线之和均相等。编写程序进行求解。
    遇到这样的问题,我们最容易想到的是采用穷举法,一个一个的去测试。下面给出的代码是3*3的,代码如下:
  1. #include <stdio.h>

  2. int match(int i, int j, int k, int l, int m, int n, int o, int p, int q)
  3. {
  4.   if(i!=j && i!=k && i!=l && i!=m && i!=n && i!=o && i!=p && i!=q && j!=k && j!=l && j!=m && j!=n && j!=o && j!=p && j!=q && k!=l && k!=m && k!=n && k!=o && k!=p && k!=q && l!=m && l!=n && l!=o && l!=p && l!=q && m!=n && m!=o && m!=p && m!=q && n!=o && n!=p && n!=q && o!=p && o!=q && p!=q)
  5.     return 1;
  6.   else
  7.     return 0;
  8. }

  9. int justic(int i, int j, int k ,int l, int m, int n, int o, int p, int q)
  10. {
  11.   if(i+j+k==l+m+n && i+j+k==o+p+q && i+l+o==j+m+p && i+l+o==k+n+q && i+m+q==k+m+o)
  12.     return 1;
  13.   else
  14.     return 0;
  15. }

  16. void getMatrix()
  17. {
  18.   int i,j,k,l,m,n,o,p,q;
  19.   for(i=1;i<=9;i++)
  20.     for(j=1;j<=9;j++)
  21.       for(k=1;k<=9;k++)
  22.         for(l=1;l<=9;l++)
  23.           for(m=1;m<=9;m++)
  24.             for(n=1;n<=9;n++)
  25.               for(o=1;o<=9;o++)
  26.                 for(p=1;p<=9;p++)
  27.                   for(q=1;q<=9;q++)
  28.                   {
  29.                     if(match(i,j,k,l,m,n,o,p,q))
  30.                       if(justic(i,j,k,l,m,n,o,p,q)){
  31.                         printf("%d %d %d\n",i,j,k);
  32.                         printf("%d %d %d\n",l,m,n);
  33.                         printf("%d %d %d\n",o,p,q);
  34.                         return;
  35.                       }
  36.                   }
  37. }

  38. int main(int argc, char *argv[])
  39. {
  40.   getMatrix();
  41.   return 0;
  42. }
执行结果如下:
peng@ubuntu:~/src/test/c/suanfa/miaoqu$ ./a.out 
2 7 6
9 5 1
4 3 8
阅读(2606) | 评论(0) | 转发(0) |
0

上一篇:求PI的近似值

下一篇:移数字游戏

给主人留下些什么吧!~~