zoukankan      html  css  js  c++  java
  • 螺旋矩阵的几种打印形式

    螺旋矩阵的几种打印形式
    原创LQC_SUSER 发布于2018-08-06 21:39:43 阅读数 958  收藏
    展开
    #include<stdio.h>
    int a[10][10];
    void SpiralMatrix1(int N)//从左上角开始顺时针旋转
    {
        int i,j,tp=1;
        for(i=0;i<N/2;i++)//最外层控制圈数
        {
            for(j=i;j<N-1-i;j++)
                if(a[i][j]==0)
                    a[i][j]=tp++;
            for(j=i;j<N-1-i;j++)
                if(a[j][N-1-i]==0)
                    a[j][N-1-i]=tp++;
            for(j=N-1-i;j>i;j--)
                if(a[N-1-i][j]==0)
                    a[N-1-i][j]=tp++;
            for(j=N-1-i;j>i;j--)
                if(a[j][i]==0)
                    a[j][i]=tp++;
        }
        if(N%2==1)
            a[N/2][N/2]=tp;
    }
    void SpiralMatrix2(int N)//从右上角开始顺时针旋转
    {
        int i,j,tp=1;
        for(i=0;i<N/2;i++)
        {
            for(j=i;j<N-1-i;j++)
                if(a[j][N-1-i]==0)
                    a[j][N-1-i]=tp++;
            for(j=N-1-i;j>i;j--)
                if(a[N-1-i][j]==0)
                    a[N-1-i][j]=tp++;
            for(j=N-1-i;j>i;j--)
                if(a[j][i]==0)
                    a[j][i]=tp++;
            for(j=i;j<N-1-i;j++)
                if(a[i][j]==0)
                    a[i][j]=tp++;
        }
        if(N%2==1)
            a[N/2][N/2]=tp;
    }
    void SpiralMatrix3(int N)//从左上角开始逆时针旋转
    {
        int i,j,tp=1;
        for(i=0;i<N/2;i++)
        {
            for(j=i;j<N-1-i;j++)
                if(a[j][i]==0)
                    a[j][i]=tp++;
            for(j=i;j<N-1-i;j++)
                if(a[N-1-i][j]==0)
                    a[N-1-i][j]=tp++;
            for(j=N-1-i;j>i;j--)
                if(a[j][N-1-i]==0)
                    a[j][N-1-i]=tp++;
            for(j=N-1-i;j>i;j--)
                if(a[i][j]==0)
                    a[i][j]=tp++;
        }
        if(N%2==1)
            a[N/2][N/2]=tp;
    }
    void main()
    {
        int i,j,N;
        printf("请输入N:");
        scanf("%d",&N);
        SpiralMatrix1(N);
        printf("从左上角开始顺时针旋转: ");
        for(i=0;i<N;i++)
        {
            for(j=0;j<N;j++)
                printf("%-4d",a[i][j]);
            printf(" ");
        }
        for(i=0;i<N;i++)
            for(j=0;j<N;j++)
                a[i][j]=0;
        SpiralMatrix2(N);
        printf("从右上角开始顺时针旋转: ");
        for(i=0;i<N;i++)
        {
            for(j=0;j<N;j++)
                printf("%-4d",a[i][j]);
            printf(" ");
        }
        for(i=0;i<N;i++)
            for(j=0;j<N;j++)
                a[i][j]=0;
        SpiralMatrix3(N);
        printf("从左上角开始逆时针旋转: ");
        for(i=0;i<N;i++)
        {
            for(j=0;j<N;j++)
                printf("%-4d",a[i][j]);
            printf(" ");
        }
    }
     

    这里写图片描述这里写图片描述这里写图片描述
    这里写图片描述
    ————————————————
    版权声明:本文为CSDN博主「LQC_SUSER」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_34875598/article/details/81461889

  • 相关阅读:
    [redis读书笔记] 第二部分 sentinel
    [redis读书笔记] 第三部分 多机数据库的实现 复制
    单线程的REDIS为什么这么快?
    [redis读书笔记] 第二部分 单机数据库 RDB持久化
    [redis读书笔记] 第二部分 单机数据库 数据库实现
    选靓号——拼多多笔试题(贪心+暴力)
    种树——拼多多笔试题(暴搜+剪枝)
    【学习笔记】《Java编程思想》 第8~11章
    leetcode——二分
    CodeForces-1265E(期望)
  • 原文地址:https://www.cnblogs.com/grj001/p/12223032.html
Copyright © 2011-2022 走看看