数学アルゴリズム問題の解法と思考プロセス

回文数の判定 回文数を判定する問題では、まず基本的なケースを考慮し、一般的なケースを解決した後、特殊なケースを処理することで問題を解決できます。 class PalindromeChecker { public boolean isPalindrome(int number) { if (number < 0) { return false; } if (number < 10) { return true; } ...

6月6日 19:31 投稿

藍橋杯2021年省赛B組 C/C++ 問題解説

問題A:空間計算 メモリ空間の計算問題。256MBをバイト単位で表現し、各データが32ビット(4バイト)の場合の要素数を求める。 計算式:256 × 1024 × 1024 × 8 ÷ 32 = 67108864 問題B:カードの数字 0から9までの数字カードが各2021枚ずつある。1から順に数字を書いていくとき、何まで書けるかを求める問題。 #include <iostream> using namespace std; int main( ...

6月5日 23:06 投稿

2023年伝智杯プログラミング競技予選ソリューション

文字列連結 2つの文字列を入力として受け取り、連結して出力します。空白を含む可能性があるため、getline関数を使用します。 #include <iostream> #include <string> using namespace std; int main() { string a, b; getline(cin, a); getline(cin, b); cout << a + b; return 0; } 最小差分値 整数配列内の隣接要素間の最小差 ...

6月4日 19:44 投稿

最長有効括弧の探索:スタックと動的計画法によるアプローチ

問題の説明: '(' と ')' のみからなる文字列が与えられます。最長の有効な(形式が正しく連続している)括弧部分文字列の長さを見つけてください。 例 1: 入力:s = "(()" 出力:2 説明:最長の有効な括弧部分文字列は "()" です 例 2: 入力:s = ")()())" 出力:4 説明:最長の有効な括弧部分文字列は "()()" です 例 3: 入 ...

6月4日 17:25 投稿

Javaアルゴリズム速習ガイド

Javaアルゴリズムクイックリファレンス リスト 初期化 List<Integer> 数値リスト = new ArrayList<>(); 主なメソッド add(Object 要素); size(); get(int インデックス); isEmpty(); contains(Object o); remove(int インデックス); マップ マップはキーと値のペアを保持するコレクションです。 初期化 Map<String, Integer> マップ = new HashMap< ...

6月4日 16:11 投稿

C言語における文字列処理の実装テクニック

関数実装問題 部分文字列の検索: テストプログラムの例: #include <stdio.h> #define MAX_SIZE 30 char *find_substring(char *text, char *pattern); void read_string(char str[]); /* 評価システムが提供、詳細は省略 */ int main() { char text[MAX_SIZE], pattern[MAX_SIZE], *position; read_string(text); read_string(pattern); posi ...

6月2日 23:18 投稿

幅優先探索による連結成分と最短経路の解析

幅優先探索(BFS)は、始点から順に隣接ノードを訪問し、各レベルのノードをすべて処理してから次の深さへ進むアルゴリズムです。この手法は、グリッド上の連結領域の数え上げや迷路における最短ステップ数の算出に適しています。 1のブロック数をカウントする例 #include <iostream> #include <queue> using namespace std; const int SIZE = 100; int rows ...

6月2日 19:01 投稿

データ構造とアルゴリズム - 並び替えソート

1. バブルソート 1.1 基本的なバブルソート バブルソートは最も単純なソートアルゴリズムの一つです。隣り合う要素を比較し、大きい方を右に移動させることで昇順に並べます。以下の例を見てみましょう。 配列 [5, 1, 4, 2, 8, 4] をバブルソートを使って並べ替えてみます。異なる値の4を区別するために色分けしています。 ステップ1: 5 と 1 を比較して、5 > 1 ...

6月2日 18:11 投稿

Pythonでパスカルの三角形を生成する - 直角・正三角形の出力

パスカルの三角形(楊輝三角形)は、各行の両端が1で、内部の各要素が右上と左上の要素の和となる三角形の配列です。Pythonでこれを生成し、さまざまな形式(直角、正三角形、中央揃え)で出力する方法を紹介します。 基本アルゴリズム(2次元リスト版) まず、n行n列の2次元リストを0で初期化します。行と列のインデックスを0から始めると、次の関係が成り立ちます。 ...

6月2日 17:13 投稿

LeetCodeの代表的なアルゴリズム問題とその解答

LeetCodeの代表的なアルゴリズム問題とそのC++による実装をまとめました。文字列、配列、連結リスト、動的計画法などのトピックを取り上げ、アルゴリズム面接準備や日頃の練習に役立ちます。 目次 文字列処理 配列問題 連結リスト操作 動的計画法 木の走査 1. 文字列処理 1.1 二進数の部分文字列を数える(Count Binary Substrings) 問題説明:与えられた文字列において ...

6月2日 16:49 投稿