数学趣题——魔幻方阵
生活随笔
收集整理的這篇文章主要介紹了
数学趣题——魔幻方阵
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
數學趣題——魔幻方陣
轉載鏈接:http://www.cnblogs.com/steven_oyj/archive/2010/05/26/1744130.html
問題:
在n*n的矩陣中填寫1~n*n這n*n個數字。使得它的每一行、每一列以及兩個對角線之和均相等。求出一個這樣的三階魔幻方陣
最簡單,效率最低的窮舉法可以解。
源碼:
#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:?
轉載于:https://www.cnblogs.com/chenyuanqiu2008/p/5201147.html
總結
以上是生活随笔為你收集整理的数学趣题——魔幻方阵的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PHP程序员的技术成长规划(转载)
- 下一篇: Hibernate_13_QBC查询