门齿 类型:求助:编一个程序,求魔方方阵

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/05 05:49:02
求助:编一个程序,求魔方方阵

魔方方阵:一个n阶方阵,其每一行、每一列和对角线上元素之和均相等。

哪个高手来帮一下忙啊

魔方方阵:一个n阶方阵,其每一行、每一列和对角线上元素之和均相等。

哪个高手来帮一下忙啊
最好是C语言写的程序
若其它语言编写的,请尽量写出C语言初学者能看懂的注释

呵呵,简单的,奇数的,偶数的话只要交换位置就可以了
#include<iostream>
#include<vector>
#include<iomanip>
#include<fstream>
using namespace std;
int main(){
ofstream cout("hf.txt");
for(int n;cin>>n&&n;cout<<endl){
if(!(n%2)) {
cout<<"no"<<endl;
continue;
}
vector<vector<int> > hf(n,vector<int>(n,0));
//memset(hf,0,sizeof(hf));
for(int i=n-1,j=(n-1)/2,s=1; s<=n*n; j++,i++)
if(!hf[i%n][j%n]){
i%=n;
j%=n;
hf[i][j]=s++;
}
else{
i=(i-2+n)%n;
j=(j-1+n)%n;
hf[i][j]=s++;
}
for(int i=0; i<n; i++){
for(int j=0; j<n; j++)
cout<<setw(3)<<hf[i][j];
cout<<endl;
}
}
}

^