zoukankan      html  css  js  c++  java
  • 数学趣题——魔幻方阵

    问题:

    在n*n的矩阵中填写1~n*n这n*n个数字。使得它的每一行、每一列以及两个对角线之和均相等。求出一个这样的三阶魔幻方阵

    最简单,效率最低的穷举法可以解。

    源码:

       1: #include <stdio.h>
       2:  
       3: int match(int i,int j,int k,int l,int m,int n,int o,int p,int q)
       4: {
       5:     /*判断变量i-q是否互不相等,是则返回1,不是则返回0*/
       6:     if(i!=j&&i!=k&&i!=l&&i!=m&&i!=n&&i!=o&&i!=p&&i!=q
       7:          &&j!=k&&j!=l&&j!=m&&j!=n&&j!=o&&j!=p&&j!=q
       8:             &&k!=l&&k!=m&&k!=n&&k!=o&&k!=p&&i!=q
       9:                     &&l!=m&&l!=n&&l!=o&&l!=p&&l!=q
      10:                      &&m!=n&&m!=o&&m!=p&&m!=q
      11:                               &&n!=o&&n!=p&&n!=q
      12:                                      &&o!=p&&o!=q
      13:                                           &&p!=q)
      14:     return 1 ;
      15:     else return 0;
      16: }
      17:  
      18:  
      19: int justic(int i,int j,int k,int l,int m,int n,int o,int p,int q)
      20: {
      21:     /*判断变量i-q的这种排列是否满足魔幻方阵的要求,满足返回1,不满足返回0*/
      22:     if(i+j+k == l+m+n && i+j+k == o+p+q &&
      23:     i+l+o == j+m+p && i+l+o == k+n+q
      24:     && i+m+q == k+m+o)return 1;
      25:     else return 0;
      26: }
      27:  
      28: void getMatrix(){
      29:     int i,j,k,l,m,n,o,p,q;
      30:     for(i=1;i<=9;i++)
      31:         for(j=1;j<=9;j++)
      32:             for(k=1;k<=9;k++)
      33:                 for(l=1;l<=9;l++)
      34:                     for(m=1;m<=9;m++)
      35:                         for(n=1;n<=9;n++)
      36:                             for(o=1;o<=9;o++)
      37:                                 for(p=1;p<=9;p++)
      38:                                      for(q=1;q<=9;q++)
      39:                                      {
      40:                                         if(match(i,j,k,l,m,n,o,p,q))
      41:                                         if(justic(i,j,k,l,m,n,o,p,q))
      42:                                         {
      43:                                             printf("%d %d %d\n",i,j,k);  /*输出结果*/
      44:                                             printf("%d %d %d\n",l,m,n);
      45:                                             printf("%d %d %d\n",o,p,q);
      46:                                             printf("\n");
      47:                                             return;
      48:                                         }                                /*返回*/
      49:                                      }
      50:  
      51: }
      52:  
      53: int main()
      54: {
      55:     getMatrix() ; /*输出一个三阶魔幻方阵*/
      56:     return 0;
      57: }
      58:  
  • 相关阅读:
    HTML5 WebSocket 技术介绍
    腾迅平台接入笔记
    Windows 2008 R2 64位上安装wamp失败的原因
    海伦公式
    ANE接入平台心得记录(安卓)
    ANE原生代码的调试(安卓)
    一行代码远离Google浏览器兼容问题的困扰
    U3D的飞船太空射击例子中,使用coroutine
    这几天在搞UNITY3D,感觉回到了AS2
    网页动物园2.0发布,经过几个月的努力,采用JAVA编写!
  • 原文地址:https://www.cnblogs.com/steven_oyj/p/1744130.html
Copyright © 2011-2022 走看看