📄 任意基数阶魔方块.cpp
字号:
//基本算法为:先将1填入第一行中间位置;再依次将2-n方按如下规律填写:
//1,填入上个数上一行的右边位置,如果没有上一行则转到最后一行,如果右边没有方格
//则转到最左边的方格。2,如果要填的位置上已经有数,则转填到它上一个数的下边方格
//3,对于第一行的最后一个数的下一个数应填在该数下边的空格处
#include<iostream.h>
void main()
{
int n;
cout<<"请输入阶数目(基数):"<<endl;
cin>>n;
int k=n%2;
if(k==0)
{
cout<<"输入的n为偶数,请重新输入。"<<endl;
cin>>n;
}
int a[99][99];
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
a[i][j]=0;
}
int h,l;
h=0;
l=n/2;
int c,d;
a[h][l]=1;
for(int y=2;y<=n*n;y++)
{
c=h;
d=l;
if(h==0&&l==n-1)
{
a[c+1][d]=y;
h=c+1;
l=d;
}
else
{
h=(h+n-1)%n;
l=(l+n+1)%n;
if(a[h][l]!=0)
{ a[c+1][d]=y;
h=c+1;
l=d;
}
else
a[h][l]=y;
}
}
for(int x=0;x<n;x++)
{
for(int j=0;j<n;j++)
cout<<a[x][j]<<" ";
cout<<endl;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -