怎么写
2024-08-02 11:23:02
发布于:广东
T20339.螺旋矩阵
加入题单
通过率:50.00%
时间限制:1.00s
内存限制:128MB
题目描述
给你一个整数
n
n,按要求输出
n
∗
n
n∗n 的螺旋矩阵。
输入格式
输入一行,包含一个整数
n
(
n
≤
100
)
n(n≤100)
输出格式
输出
n
n 行,每行包含
n
n 个正整数.
全部评论 1
现在老师应该已经讲了,我来发一下我的题解:
#include <bits/stdc++.h> using namespace std; int main(){ int a[102][102]={},n,up=-1,le=-1,dw,ri,fang=0,qa=0,qb=0; cin>>n; dw=n,ri=n;//up,le,dw,ri是四个边界 for(int i = 1;i<=(n*n);i++){//生成 if(qb==le){//碰到左边界 qa--; qb++; fang++; dw--; } if(qb==ri){//碰到右边界 qa++; qb--; fang++; up++; } if(qa==up){//碰到上边界 qb++; qa++; fang++; le++; } if(qa==dw){//碰到下边界 qb--; qa--; fang++; ri--; } a[qa][qb]=i; if(fang%4==0)qb++; if(fang%4==1)qa++; if(fang%4==2)qb--; if(fang%4==3)qa--;//四行确定方向并移动 } for(int i = 0;i<n;i++){//输出 for(int j = 0;j<n;j++){ cout<<a[i][j]<<" "; } cout<<endl; } return 0; }
这个题解用了一个标记来作为方向的标记。
2024-08-02 来自 广东
0泥就是上午老师说的记录方向来做的吧
2024-08-02 来自 广东
0
有帮助,赞一个