テンプレートメソッドパターン - アルゴリズムの骨格を定義する設計パターン
概要
テンプレートメソッドパターンは、操作におけるアルゴリズムの骨格を定義し、特定のステップをサブクラスに延期させるデザインパターンです。これにより、サブクラスはアルゴリズムの構造を変更せずに、特定のステップを再定義できます。
実用性
アルゴリズムの不変部分を一度だけ実装し、可変的な振る舞いをサブクラスに実装させることができます。
サブクラス間 ...
7月26日 19:31 投稿
Javaアルゴリズム:動的計画法による0/1ナップサック問題の解法
ナップサック問題は、有限の容量を持つバッグにどの物品を詰めるかを最適化する古典的なアルゴリズム問題です。特に0/1ナップサック問題は、各物品をバッグに入れるか入れないかの二択しかない場合を指します。
問題設定:
3つの物品があります:
物品A:価値1000、重量1kg
物品B:価値2000、重量4kg
物品C:価値1500、重量3kg
バッグの容量は4kgで、この中に詰められる ...
7月26日 16:45 投稿
センチネルノードによる効率的な探索アルゴリズムの実装
組み込みシステムの開発において、リアルタイム性が求められる処理では、実行時間の安定性が重要です。特に、特定の条件を満たす要素を線形探索する場合、単純な実装では処理時間が不安定になることがあります。
このような問題に対処するため、センチネル(番兵)と呼ばれる手法があります。これは探索対象の末尾に検索キーと同じ値を持つ要素を配置することで、ループ内 ...
7月25日 21:01 投稿
C言語初学者向けの実践プログラムと核心概念の解説
基本入出力と制御構造
初期学習段階では、標準入出力と基本的な制御フローをマスターすることが重要です。
#include <stdio.h>
int main() {
// 飛行機のASCIIアート
printf(" ** \n");
printf(" ** \n");
printf("************\n");
printf("************\n");
printf(" * * \n");
printf(" * * \n");
...
7月25日 17:40 投稿
連結リスト操作の基礎
要素の削除
連結リストの操作において、先頭ノードと他のノードの削除処理は異なります。他のノードは前のノードを介して削除されますが、先頭ノードには前のノードが存在しません。
先頭ノードを削除するには、単にヘッドポインタを次のノードに移動します。しかし、この特別なケースを避けるためにダミーヘッドノードを使用すると、全てのノードで一貫した削除方法が適用 ...
7月24日 21:23 投稿
2つのキューを使用したスタックの実装
2つのキューを使用したスタックの実装
問題分析
この問題は、配列やリンクリストでスタックを実装するのではなく、キューを使用してスタックを実装することを求めています。キューとスタックの関係は逆で、スタックは後入れ先出し(LIFO)の特性を持つのに対し、キューは先入れ先出し(FIFO)の特性を持っています。したがって、この問題はキューの性質をスタックの性質 ...
7月24日 20:46 投稿
睿抗省赛模拟题解
2024年問題
RC-u1 熱天気判定
1からnまでのループを行い、気温が35度以上かどうかをチェックし、指定されたルールに従ってカウントします。
void resolve() {
cin >> n >> k;
int result = 0, count = 0;
for (int i = 1; i > temp;
if (temp >= 35) {
if (k == 4) count++;
else result++;
}
k++;
i ...
7月24日 18:58 投稿
C言語によるヒープと二分木の実装
ヒープデータ構造の実装
ヘッダファイル定義
#pragma once
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <stdbool.h>
typedef int HeapValue;
typedef struct MinHeap {
HeapValue* elements;
int count;
int capacity;
} MinHeap;
void HeapInitialize(MinHeap* heap);
void HeapDestroy(MinHeap* heap) ...
7月23日 19:21 投稿
循環リンクリストの検出と入環ノード特定
循環リンクリストの検出
問題概要
リンクリストの先頭ノードheadが与えられたとき、循環構造の有無を判定する。循環構造とは、ノードのnextポインタを追跡することで再訪問可能なノードが存在する状態を指す。循環が存在しない場合はfalseを返す。
入力例
例1: head = [3,2,0,-4], pos=1 → true
例2: head = [1,2], pos=0 → true
例3: head = [1], pos=-1 → false
解法: ...
7月22日 22:34 投稿
2024年蓝桥杯コンテスト対策:重要知識と試験テクニック
過去問
2023年第十四回蓝桥杯C++B組の振り返り
2022年
2021年
蓝桥杯公式サイトの問題演習
⭐試験テクニック⭐
まず暴力解法(時間計算量の高い解法)を考えます → 部分点を獲得
データ範囲から正しい時間計算量を判断し、その計算量に基づいてアルゴリズムの範囲を特定します。
暴力解法:問題文のプロセスをシミュレーションします。
時間計算量:https://www.acwin ...
7月22日 18:52 投稿