
Lv.1
鸿鹄一再高举 天地睹方圆【第61期社区星】
签名:猫站肯定不会上的了,留了两个2021年退喵时最后的作品。 有老友可以来qq:2309193203找我。
在 【原创教程】C++ 巧解 “螺旋方阵” 中回复
我看得懂,但没必要这么麻烦吧
直接喵枚举x,y就行啦
复杂度O(n²)已经是最快的了
直接贴代码,毕竟太简单
#include<bits/stdc++.h>
using namespace std;
int a[1010][1010];
int main(){
int k = 1;
int n,x = 1,y = 0;
cin>>n;
while(k <= n * n){
while(y < n && !a[x][y + 1]){
y++;
a[x][y] = k;
k++;
}
while(x < n && !a[x + 1][y]){
x++;
a[x][y] = k;
k++;
}
while(y > 1 && !a[x][y - 1]){
y--;
a[x][y] = k;
k++;
}
while(x > 1 && !a[x - 1][y]){
x--;
a[x][y] = k;
k++;
}
}
for(int i = 1;i <= n;i++){
for(int j = 1;j <= n;j++){
cout<<setw(3)<<a[i][j];
}
cout<<endl;
}
}2021-08-04T20:54:29 点赞:0