编程实现N阶奇数幻方游戏

来源:互联网 发布:主控芯片检测软件 编辑:程序博客网 时间:2024/04/30 06:42

       奇幻七绝
  先填上行正中央,
  依次斜填切莫忘。
  上格没有顶格填,
  顶格没有底格放。

转载于:http://blog.csdn.net/fengchaokobe/article/details/7437767

编程实现奇数阶幻方算法:

#include<iostream>#include<iomanip>#include<cmath>using namespace std;int main(){int n;do {cout << "Please input a odd num:" << endl;cin>>n;} while (!(n%2));int i;int **Matr=new int*[n];//动态分配二维数组for(i=0; i<n; ++i)Matr[i]=new int[n];//动态分配二维数组//j=n/2代表首行中间数作为起点,即1所在位置int j=n/2, num=1;//初始值i=0;while(num!=n*n+1){int ii = (i%n+n)%n;//注意i%n可能为负数int jj = (j%n+n)%n;//往右上角延升,若超出则用%转移到左下角Matr[ii][jj]=num;//斜行的长度和n是相等的,超出则转至下一斜行if(num%n==0)//以n个数一组斜对角填,填满了则又从最后一个数的正下方开始填i++;else{i--;j++;}num++;}for(i=0;i<n;i++){for(j=0;j<n;++j)cout<<setw((int)log10((double)n*n)+4)<<Matr[i][j];//格式控制cout<<endl<<endl;//格式控制}for(i=0;i<n;++i)delete []Matr[i];return 1;}