n阶螺旋矩阵

it2025-11-06  11

问题描述: 输入一个n,使其按照螺旋的方式输出

解决思想:

1.对螺旋矩阵进行划分,找出n、i、j之间的关系 2.i表示的是循环次数,即旋转到第几圈;j用于表示当前所在的 **`行或列`**; 用固定的数值与j打配合,表示存储的位置; 3.setw(n):占固定位数输出 4.奇偶数字不同:奇数多出n*n存放在中间位置,a[(n+1)/2][(n+1)/2]=cnt; 样例输入: 4 样例输出: 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7

AC代码(c++):

#include<bits/stdc++.h> using namespace std; int a[20][20]; int main() { int n; int i=1,j=1,cnt=1; cin>>n; while(i<=(n/2)){ for(j=i;j<=n+1-i;j++){ a[i][j]=cnt++; } for(j=i+1;j<=n-i;j++){ a[j][n+1-i]=cnt++; } for(j=n+1-i;j>=i;j--){ a[n+1-i][j]=cnt++; } for(j=n-i;j>=i+1;j--){ a[j][i]=cnt++; } i++; } //判断奇偶两种情况 if(n%2!=0){ a[(n+1)/2][(n+1)/2]=cnt; } //打印输出 for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ cout<<setw(3)<<a[i][j]; } cout<<endl; } return 0; }
最新回复(0)