【競プロ精進ログ】APG4b編<2-3>

zuka

ついに競技プログラミングを始めました!

本記事は,管理人の競技プロ精進日記としてログを取ったものです。モチベーションを爆上げするために積極的に,アウトプットしていく作戦です。これから競技プログラミングを始めようと考えている人や,なんとなく敷居が高いと感じている人の参考になれば嬉しく思います。その他の記事は以下をご覧ください。

目次

本記事の概要

Atcoderが公表しているc++の入門記事の内容を1からさらっていくものです。今回は2.03.多次元配列です。

実装

#include <bits/stdc++.h>
#define _GLIBCXX_DEBUG
#define rep(i, n) for (int i = 0; i < (int)(n); i++)
using namespace std;

int main() {
  int N, M = 0;
  cin >> N >> M;
  vector<int> A(M), B(M);
  rep(i, M){
    cin >> A[i] >> B[i];
  }
  vector<vector<char>> R(N, vector<char>(N, '-'));
  rep(i, M){

    // インデックスの開始番号の調整
    A[i]--;
    B[i]--;

    // 実際に多次元配列に代入
    R[A[i]][B[i]] = 'o';
    R[B[i]][A[i]] = 'x';
  }

  rep(i, N){
    rep(j, N){
      // 出力
      cout << R[i][j];

      // 最後尾であれば改行を出力
      if (j==N-1){
        cout << endl;
      }
      else{
        cout << ' ';
      }
    }
  }
}

ポイント

今回おさえるべき内容

 vector型の中にvector型を宣言すれば多次元配列になる

 要素へのアクセスは配列の配列として扱う

 C言語風の配列も多次元にできる

配列の中に配列を宣言することで「配列の配列」ができます。このデータ構造を多次元配列と呼びます。多次元配列は,行列やグリッドなどを表現する際に重宝します。

初期化方法は少し頭がこんがらがりますが,多次元配列はあくまでも配列の配列であることを忘れないようにしてください。

// vector型の中にvector型を宣言
// int型で4×5の多次元配列を宣言している
vector<vector<int>> X(4, vector<int>(5));

// C言語風の宣言方法
int X[4][5];
よかったらシェアしてね!

コメント

コメントする

目次
閉じる