C++ 螺旋数字正方形

2020年5月20日 0 条评论 1.09k 次阅读 0 人点赞

螺旋数字正方形 (100/100 分数)

题目描述

打印螺旋数字正方形

输入描述

输入一个整数n,1<=n<=31

输出描述

输出数字正方形。

注意,每个数字占4个字符,右对齐,不全则补足空格;

样例输入

10

样例输出

   1   2   3   4   5   6   7   8   9  10
  36  37  38  39  40  41  42  43  44  11
  35  64  65  66  67  68  69  70  45  12
  34  63  84  85  86  87  88  71  46  13
  33  62  83  96  97  98  89  72  47  14
  32  61  82  95 100  99  90  73  48  15
  31  60  81  94  93  92  91  74  49  16
  30  59  80  79  78  77  76  75  50  17
  29  58  57  56  55  54  53  52  51  18
  28  27  26  25  24  23  22  21  20  19

注释

#include <iostream>
using namespace std;

int main()
{
    int i, j, r, l, b, d, pl, N, tmp;
    cin >> N;

    for (i = 1; i <= N; i++)
    {
        for (j = 1; j <= N; j++)
        {
            r = i;
            d = 0;
            pl = j - r;
            if (r > N - j + 1)
            {
                r = N - j + 1;
                d = 1;
                pl = i - r;
            }
            if (r > N - i + 1)
            {
                r = N - i + 1;
                d = 2;
                pl = N - j + 1 - r;
            }
            if (r > j)
            {
                r = j;
                d = 3;
                pl = N - i + 1 - r;
            }

            l = N - 2 * (r - 1) - 1;
            b = (4 * N - 4) * (r - 1) - 4 * (r - 1) * (r - 2) + 1;

            tmp = b + l * d + pl;
            if(tmp < 10){
                cout << "   " << tmp;
            }else if (tmp > 9 && tmp <100){
                cout << "  " << tmp;
            }else{
                cout << " " << tmp;
            }
        }
        cout << ("\n");
    }
    return 0;
}

没看懂

Sevenfal

这个人太懒什么东西都没留下

文章评论(0)