#include<iostream>
using namespace std;
#define max 100
int flag[max][max];
void init()
{
int i,j;
for(i=0;i<max;i++)
for(j=0;j<max;j++)
flag[i][j]=0;
}
void func(int n,int inc)
{
int i,j;
int x,y,k;
int k1,k2,k3,k4;
for(k1=0,k2=0,k3=0,k4=0;i<n&&j<n;k3++,k2++,k1++,k4++)
{
//cout<<k1<<" "<<k2<<" "<<k3<<" "<<endl;
i=k3,j=k2,x=k1,y=k4;
//cout<<"i:"<<i<<"j:"<<j<<"x:"<<x<<endl;
for(;i<n;i++)
{
if(flag[x][i]==0)
{
inc++;
flag[x][i]=inc;
}
}
//cout<<"i:"<<i<<"j:"<<j<<"x:"<<x<<endl;
//cout<<"inc1:"<<inc<<endl;
for(k=i-1;j<n;j++)
{
if(flag[j][k]==0)
{
inc++;
flag[j][k]=inc;
}
}
//cout<<"i:"<<i<<"j:"<<j<<"y:"<<y<<endl;
// cout<<"inc2:"<<inc<<endl;
for(i=n-1,x=j-1;i>=0;i--)
{
if(flag[x][i]==0)
{
inc++;
flag[x][i]=inc;
}
}
//cout<<"i:"<<i<<"j:"<<j<<"x:"<<x<<endl;
// cout<<"inc3:"<<inc<<endl;
for(j=n-1;j>=0;j--)
{
if(flag[j][y]==0)
{
inc++;
flag[j][y]=inc;
}
}
//cout<<"i:"<<i<<"j:"<<j<<"y:"<<y<<endl;
//cout<<"inc4:"<<inc<<endl;
n--;
//cout<<n<<endl;*/
}
}
void print(int n)
{
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
cout<<flag[i][j]<<'\t';
cout<<endl;
}
}
int main()
{
int n;
while(cin>>n)
{
init();
func(n,0);
print(n);
}
return 0;
}
分享到:
相关推荐
### 回型数 C++ 实现解析 在深入解析给定的代码片段之前,我们先来了解一下何为“回型数”。回型数是指一种特殊形式的数字排列方式,其结构类似于汉字“回”,即从外层向内层螺旋式地填充数字。这种数字排列在数学...
用C++编写的回型矩阵,任意输入一个数字,然后以回型矩阵的形式显示出来
《C++回形取数:探索蓝桥杯国赛中的编程奥秘》 在编程竞赛领域,"蓝桥杯"无疑是一项备受瞩目的比赛,它以其高质量的题目和严格的评判标准,吸引了众多热爱编程的学子积极参与。本次我们将深入探讨一个在蓝桥杯国赛...
用C++实现矩阵转置的模板类,属于标准模板。
请用C语言实现 输入N,打印N*N矩阵 比如 N = 3, 打印: 1 2 3 8 9 4 7 6 5 N = 4, 打印 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7
好详细的资源描述有机会获得我们的推荐,更有利于他人下载,赚取更多积分。
- **应用场景**:尽管在C++等现代语言中,异常处理机制和循环结构提供了更好的替代方案,但在特定情况下,如复杂的嵌套循环或错误处理逻辑中,`goto`语句依然会被使用。 2. **二叉树第N层的最大结点数** - **知识...