グラフ理論のアルゴリズム実装ノート
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 投稿