AtCoder Beginner Contest 333 スolved 解説

概要 AtCoder Beginner Contest 333 の Implement 問題を解説します。難易度は A-D が初心者〜中級者向け、E はGreedy + スタック操作の基礎知识点が必要です。 A - Three Threes 入力された整数 \(n\) を \(n\) 回連続して出力する問題です。 制約が \(1 \le n \le 9\) と非常に小さいため、ループで単に出力すればOKです。 #include <iostream> using namespac ...

6月29日 20:56 投稿

AtCoder Beginner Contest 378

A - ペアリング 問題文 4つの数が与えられる。各ステップで同じ値の2つの数字を選んで削除する。この操作を最大何回行えるかを求める。 解法 シミュレーションを行う。 コード コードを表示#include <bits/stdc++.h> using namespace std; #define int long long typedef pair<int, int> pii; const int mxn = 1e6 + 5; void solve() { int a, b, c, d; ...

6月27日 01:13 投稿

再帰関数の設計手法

1. はじめに 再帰は、関数型言語のみならず、あらゆるプログラミングパラダイムにおいて極めて重要な概念である。本稿では、数学的帰納法との関連性を踏まえながら、再帰関数の設計手法について体系的解説していく。 2. 再帰と数学的帰納法 2.1 数学的帰納法の原理 数学的帰納法は、自然数に関する命題を証明するための手法である。その原理は以下の2つのステップから ...

6月22日 22:05 投稿

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

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 投稿