
蛇行パターンでマトリックスを印刷する方法:C++, Java, Pythonでの実装
この記事では、与えられたn x nのマトリックスを蛇行パターンで印刷する方法を解説します。これは、多くのプログラミング面接で問われる一般的な問題です。この記事では、C++, Java, Pythonを使った実装例を紹介し、時間計算量と空間計算量についても説明します。
蛇行パターンとは?
蛇行パターンとは、マトリックスの要素を行ごとに交互の方向で印刷するパターンです。偶数行は左から右へ、奇数行は右から左へ印刷します。
アルゴリズム
蛇行パターンでマトリックスを印刷するアルゴリズムは以下の通りです。
- すべての行を走査します。
- 各行について、それが偶数行であるか奇数行であるかをチェックします。
- 偶数行の場合は、左から右へ印刷します。
- 奇数行の場合は、右から左へ印刷します。
実装例
以下に、C++, Java, Pythonでの実装例を示します。
C++
#include <iostream>
#define M 4
#define N 4
using namespace std;
void print(int mat[M][N]) {
// すべての行を走査
for (int i = 0; i < M; i++) {
// 現在の行が偶数かどうか
if (i % 2 == 0) {
// 左から右へ印刷
for (int j = 0; j < N; j++)
cout << mat[i][j] << " ";
}
// 現在の行が奇数かどうか
else {
// 右から左へ印刷
for (int j = N - 1; j >= 0; j--)
cout << mat[i][j] << " ";
}
}
}
int main() {
int mat[M][N] = { { 10, 20, 30, 40 },
{ 15, 25, 35, 45 },
{ 27, 29, 37, 48 },
{ 32, 33, 39, 50 } };
print(mat);
return 0;
}
Java
Python
時間計算量と空間計算量
このアルゴリズムの時間計算量はO(N x M)です。これは、マトリックスのすべての要素を走査する必要があるためです。
このアルゴリズムの空間計算量はO(1)です。これは、追加のメモリを使用しないためです。
まとめ
この記事では、与えられたn x nマトリックスを蛇行パターンで印刷する方法を解説しました。これは、面接でよく問われる問題なので、理解しておくことをお勧めします。この記事が、あなたのプログラミングスキルを向上させるのに役立つことを願っています。