链接:https://ac.nowcoder.com/acm/problem/22230
来源:牛客网
题目描述
给你一个整数n,按要求输出n∗n的回型矩阵
输入描述:
输入一行,包含一个整数n
1<=n<=19
输出描述:
输出n行,每行包含n个正整数.
示例1
输入
复制
4
输出
复制
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
代码如下:
#include<bits/stdc++.h>
using namespace std;
//用二位数组模拟,每次用p,q,控制好边界的位置,
//每次都是一样的,结束的位置是当计数器<n*n;
int main(){
int n;
cin>>n;
int i,j,k,p,q;
int a[20][20];
int count = 0;
p = 0;
q = n-1;
while(count<n*n){
for(i=p;i<=q;i++){
a[p][i] = ++count;
}
for(i=p+1;i<=q;i++){
a[i][q] = ++count;
}
for(i=q-1;i>=p;i--){
a[q][i] = ++count;
}
for(i = q-1;i>=p+1;i--){
a[i][p] = ++count;
}
++p;
--q;
}
for(int i=0;i<n;i++){
for(j=0;j<n;j++){
cout<<a[i][j]<<" ";
}
cout<<endl;
}
return 0;
}