グラフ理論のアルゴリズム実装ノート

1. 隣接行列を用いたDFS(再帰実装) class GraphStructure { public: GraphStructure(int nodes); void addConnection(int src, int dst); void traverseDFS(int startNode); private: int nodeCount; vector<vector<int>> adjacencyMatrix; vector<bool> visitedFlags; void dfsRecursive(int current); }; GraphStruc ...

6月15日 20:13 投稿

01迷路の探索と到達可能セル数の計算

問題概要 n×nのサイズの迷路があり、各セルには0または1が書かれています。現在位置が0の場合、上下左右の隣接する4つのセルのうち1のセルに移動できます。同様に、現在位置が1の場合は、隣接する0のセルに移動可能です。この迷路に対して、指定された開始位置から移動可能なセルの総数(開始位置を含む)を求める問題です。 入力形式 1行目:正整数 n, m(迷路のサイズと ...

6月2日 22:01 投稿

文字列の回転・k個のソート済みリストのマージ・スキー問題の解法

109: 文字列の回転 問題リンク: 文字列回転問題 解法: class StringRotator { public: bool checkRotation(string str1, string str2) { int len = str1.length(); if (len != str2.length()) return false; for (int i = 0; i < len; i++) { if (str1[i] == str2[0]) { int idx1 = i, idx2 = 0; ...

5月22日 17:57 投稿

有向無環グラフにおける全経路探索:深さ優先探索による解法

問題概要 ソースからターゲットへの全経路探索という課題では、有向無環グラフ(DAG)において、ソースノード(通常はノード 0)からターゲットノード(通常は最後のノード)へのすべての可能な経路を列挙します。グラフは隣接リスト形式で表され、graph[i] はノード i から直接到達可能なノードのリストを示します。 入出力例 入力: graph = [[1,2],[3],[3],[]] 出力: ...

5月21日 19:35 投稿

二叉树における探索・判定・再帰的構築のアルゴリズム実装

最下段の左端ノード値の取得 指定された二叉樹に対して、最下層に位置する左端のノードが保持する数値を特定します。幅優先探索(BFS)を用いて木を階層ごとに処理し、各レベルの走査開始時に最初に訪問するノードを記録します。探索が完全に終了した時点で最後に記録された値が、要件を満たす最下段左端ノードの値となります。このアプローチにより、キューの順序を意図的 ...

5月20日 04:52 投稿