zoukankan      html  css  js  c++  java
  • 螺旋方阵

    所谓“螺旋方阵”,是指对任意给定的N,将1到N×N的数字从左上角第1个格子开始,按顺时针螺旋方向顺序填入N×N的方阵里。本题要求构造这样的螺旋方阵。

    输入格式:

    输入在一行中给出一个正整数N(<10)。

    输出格式:

    输出N×N的螺旋方阵。每行N个数字,每个数字占3位。

    思路:

    1. 按→方向填充,当数组元素值不是-1时,切换方向到 ↓

    2. 继续沿 ↓ 填充,当数组元素值不是-1时,切换方向为←

    3. 继续沿←填充,当数组元素值不是-1时,切换方向为 ↑

    4. 继续沿 ↑ 填充,当数组元素值不是-1时,切换方向为→(回到第1步)

    #include<stdio.h>
    #include<math.h>
    #include<stdlib.h>
    #include<string.h>
    int main()
    {
        int n, a[15][15]/*={0}*/;
        memset(a, 0, sizeof(a));//a内所有元素变为0
        scanf("%d", &n);
        int i = 1, j = 1, k = 1;
        while(k <= n * n)
        {
            while(j <= n)
            {
                if(!a[i][j])
                    a[i][j++] = k++;
                else break;
            }
            j--;
            i++;
            while(i <= n)
            {
                if(!a[i][j])
                    a[i++][j] = k++;
                else break;
            }
            i--;
            j--;
            while(j > 0)
            {
                if(!a[i][j])
                    a[i][j--] = k++;
                else break;
            }
            j++;
            i--;
            while(i > 0)
            {
                if(!a[i][j])
                    a[i--][j] = k++;
                else break;
            }
            i++;
            j++;
        }
        for(i = 1; i <= n; i++)
        {
            for(j = 1; j < n; j++)
                printf("%3d", a[i][j]);
            printf("%3d
    ", a[i][j]);
        }
        return 0;
    }
  • 相关阅读:
    Win7 64位下ProxyCap代理Java
    kafka一个诡异错误
    linux下oracle修改、新建用户并授权
    es常用查询
    linux 下启动tomcat报错 Cannot find ./catalina.sh
    linux虚拟机添加端口访问
    Linux下启动Oracle服务和监听程序
    es基础
    mysql授权远程任意人登录
    添加POI导出excel通用工具类
  • 原文地址:https://www.cnblogs.com/mayouyou/p/8650171.html
Copyright © 2011-2022 走看看