スタックを用いた中置・後置数式の評価

中置表現の評価(括弧付き) 中置表現を直接評価するには、演算子の優先順位と括弧の処理を正しく扱う必要がある。以下の実装では、2つのスタック(数値用と演算子用)を用いて、入力文字列を1パスで処理する。 #include <bits/stdc++.h> using namespace std; stack<int> nums; stack<char> ops; unordered_map<char, int> precedence = {{'+', ...

6月6日 21:06 投稿

AtCoder ABC389のアルゴリズム実装と解説

問題C: キューによる区間管理のシミュレーション この問題では、列の先頭への追加や末尾からの削除、特定位置の要素へのアクセスを効率的に行う必要があります。全ての要素を個別に保持するとメモリや計算量が膨大になるため、連続する要素を「区間」として管理する手法をとります。 各区間について「先頭からの相対距離(開始位置)」と「区間の長さ」を構造体で定義し ...

6月6日 19:20 投稿

QListWidgetの基本的な使い方と実装例

QListWidgetとQListWidgetItemについて Qtフレームワークにおいて、リスト形式でデータを表示するためのウィジェットがQListWidgetです。各リストアイテムはQListWidgetItemクラスで表現されます。 QListWidgetのクラス階層 QListWidgetの継承関係は以下の通りです: QListWidget → QListView → QAbstractItemView → QAbstractScrollArea → QFrame → QWidget コンストラ ...

6月6日 16:05 投稿

藍橋杯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 投稿

Ubuntu 20.04 における ROS Noetic の導入と Topic/Service 通信の実践

1. ROS Noetic のインストール手順 1.1 ソフトウェアソースの設定 インストールを円滑に進めるため、システムのソフトウェアソースを国内サーバー(例:Aliyun)に変更します。 システム設定 → 「About」 → 「Software & Updates」 → 「Download from」 で Aliyun を選択し、「Reload」を実行します。 1.2 ROS Noetic のインストール 1.2.1 sources.list の追加 sud ...

6月5日 22:52 投稿

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

C++ STLアルゴリズムの使い方と実装例

1. 非変更シーケンス操作 これらのアルゴリズムはコンテナの要素を変更しない。 1.1 find系関数 find(first, last, value):値がvalueと等しい最初の要素を検索。 find_if(first, last, pred):述語predを満たす最初の要素を検索。 find_end(first, last, s_first, s_last):部分列の最後の出現位置を検索。 #include <vector> #include <algorithm> #inc ...

6月4日 19:07 投稿

Android NDKにおけるAndroid.mkファイルとビルドプロセスの理解

Android NDK (Native Development Kit) を利用してC/C++コードをAndroidアプリケーションに組み込む際、Android.mkファイルはビルドシステムに対し、ソースコードに関する情報を提供する上で不可欠な役割を担います。このファイルはGNU Makefileの一部として解釈され、ネイティブモジュール(静的ライブラリ、共有ライブラリ、実行可能ファイルなど)の構築方法を定義しま ...

6月4日 17:41 投稿

AtCoder Beginner Contest 366 の問題解説と実装

はじめに 今回のコンテストでは問題Eに大部分の時間を費やすことになり、残り15分でようやく正解にたどり着くという危ない場面でした。緑色レベルの問題にも苦戦するようでは、まだまだ実力不足を感じます。 A - Election 2 高橋君と青木君のどちらかが過半数の票を獲得したかどうかを判定するシンプルな問題です。 #include <iostream> using namespace std; ...

6月4日 17:22 投稿

C++メモリ管理ガイド

C/C++メモリ領域の分布 C/C++プログラムのメモリ領域は、スタック、メモリマッピングセグメント、ヒープ、データセグメント、コードセグメントに分割されます。 スタック: 非静的局所変数、関数引数、戻り値などが格納され、下向きに成長します。 メモリマッピングセグメント: 共有動的メモリライブラリの読み込みに使用されます。 ヒープ: プログラム実行時の動的メモ ...

6月4日 16:52 投稿