螺旋矩阵

随便写的 还有待改进
好像可以用递归,这里相对暴力点
螺旋矩阵是指一个呈螺旋状的矩阵,它的数字由第一行开始到右边不断变大,向下变大,向左变大,向上变大,如此循环。
可以先写外层元素,然后里面的数按规律增加,循环打印直到最后
给出一个 3

可以给出以下矩阵:

[
[ 1, 2, 3 ],
[ 4, 5, 6 ],
[ 7, 8, 9 ]
]

#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
 
 
void generate(int n){
   int a[n+2][n+2];
    for(int i=0;i<n+2;i++){
        for(int j=0;j<n+2;j++){
            if(i==n+1||j==n+1||i==0||j==0){
                a[i][j]=-1;
            }else{
                a[i][j]=0;
            }
        }
    }
    int ope=0;//操作
    int indexi=1;
    int indexj=1;
    int count=n*n;//总数
    int mm=0;
    while(count>0){
          while(ope==0&&a[indexi][indexj]==0){
                a[indexi][indexj]=++mm;
                printf("%d\n",a[indexi][indexj]);
                indexj++;
                count--;
                
           }
           ope++;
           indexj--;
           indexi++;
        
    
        while(ope==1&&a[indexi][indexj]==0){
            a[indexi][indexj]=++mm;
            indexi++;
            count--;
        }   
        ope++;
        indexi--;
        indexj--;
        while(ope==2&&a[indexi][indexj]==0){
            a[indexi][indexj]=++mm;
            indexj--;
            count--;
        }
        ope++;
        indexj++;
        indexi--;
        while(ope==3&&a[indexi][indexj]!=-1&&a[indexi][indexj]==0){
            a[indexi][indexj]=++mm;
            indexi--;
            count--;
        }
        indexi++;
        indexj++;
        ope=0;
    }
  
    for(int i=1;i<n+1;i++){
        for(int j=1;j<n+1;j++){
            printf("%d\t",a[i][j]);
        }
        printf("\n");
    }
    
   
    
}

int main() {
    
    
    
    generate(4);
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 题目 本题要求将给定的 N 个正整数按非递增的顺序,填入“螺旋矩阵”。所谓“螺旋矩阵”,是指从左上角第 1 个格子...
    仰天蓬蒿人阅读 709评论 0 0
  • 螺旋矩阵 什么是螺旋矩阵? 螺旋矩阵是指一个呈螺旋状的矩阵,它的数字由第一行开始到右边不断变大,向下变大,向左变大...
    扯扯_2c79阅读 4,727评论 0 2
  • 螺旋矩阵和蛇型矩阵,是两个比较有趣的矩阵问题,这两个问题的答案也有许多种,简单问一下Baidu,就各自有N种实现,...
    smallfisher阅读 1,558评论 0 1
  • 今天偶然翻出了初学编程时候写的一个螺旋矩阵算法,看到一个大循环嵌套四个小循环的时候,立时觉得设计不良。经过改进之后...
    陈zhih阅读 183评论 0 0
  • 传送门 https://pintia.cn/problem-sets/994805260223102976/pro...
    Rush的博客阅读 1,305评论 0 1

友情链接更多精彩内容