HDU ACM 1998奇数阶魔方

方法:

1、第一个数填第一行正中间。

2、以后依次往上一行后一列填,并遵循如下规则:

a、如果往上超出第一行则往最后一行开始;

b、如果往右超出最后一列则往第一列开始;

c、右上角填后要往下一行开始,列不变;

d、如果所要填数之前已填,则往他下面填。

3、循环第二步,直到方格填满。

#include<iostream>using namespace std;int main() {int a[20][20];int T,n,i,j,k;cin>>T;while(T–){cin>>n;memset(a,0,sizeof(a));k=1;i=1;j=n/2+1;a[i][j]=k++;while(k<=n*n){i–;j++;if(i==0 && j==n+1) {i+=2;j–;}if(i<1) i=n;if(j>n) j=1;if(a[i][j]) {i+=2;j–;}a[i][j]=k++;}for(i=1;i<=n;i++){for(j=1;j<n;j++)printf("%4d",a[i][j]);printf("%4d\n",a[i][j]);}}return 0;}

,没有什么可凭仗,只有他的好身体,没有地方可去,只想到处流浪。

HDU ACM 1998奇数阶魔方

相关文章:

你感兴趣的文章:

标签云: