20104 蛇形矩阵

题目描述

给你一个整数n,输出n∗n的蛇形矩阵。

输入格式

输入一行,包含一个整数n

输出格式

输出n行,每行包含n个正整数,通过空格分隔。

1<=n<=1000

样例

样例输入

4
样例输出

1 2 6 7
3 5 8 13
4 9 12 14
10 11 15 16
数据范围与提示 分类标签

[二维数组]

C++题解代码

#include <bits/stdc++.h>
using namespace std;

int a[1001][1001];
int b;
int c;
int e;
int f;
bool d;


// The main procedure
int main() {
  cin>>b;
  d = true;
  c = 1;
  for (int i = 1; i <= b; i++) {
    if (d) {
      e = i;
      f = 1;
    } else {
      e = 1;
      f = i;
    }
    for (int j = 1; j <= i; j++) {
      a[e][f] = c;
      c++;
      if (d) {
        e--;
        f++;
      } else {
        e++;
        f--;
      }
    }
    d = (!d);
  }
  for (int i = (b-1); i >= 1; i--) {
    if (d) {
      e = b;
      f = ((b-i)+1);
    } else {
      e = ((b-i)+1);
      f = b;
    }
    for (int j = 1; j <= i; j++) {
      a[e][f] = c;
      c++;
      if (d) {
        e--;
        f++;
      } else {
        e++;
        f--;
      }
    }
    d = (!d);
  }
  for (int i = 1; i <= b; i++) {
    if (i > 1) {
      cout<<'\n';
    }
    for (int j = 1; j <= b; j++) {
      if (j > 1) {
        cout<<" ";
      }
      cout<<a[i][j];
    }
  }
  return 0;
}

Blockly题解代码图片