コーディングテスト演習(一)——Codeforces 784B Santa Claus and Keyboard Check
はじめに
最近、コーディングテストの準備をしており、練習問題をまとめています。 元々はC言語の経験しかありませんでしたが、実際に使用会发现C++の方がテストに向いています。ライブラリ関数も豊富で、より多くの操作をサポートでき、コードを簡潔に記述できます。 例えば、C言語で文字列を定義するにはchar s[1000]が必要ですが、C++ではstring sだけで済みます。
問 ...
5月29日 16:25 投稿
競技プログラミング問題集 SMU Spring 2023
A. 重複要素の削除
与えられた数列から重複要素を削除し、最初に出現した要素のみを保持するアルゴリズム。
#include <iostream>
#include <vector>
#include <unordered_map>
using namespace std;
vector<int> removeDuplicates(const vector<int>& nums) {
unordered_map<int, int> countMap;
vector<int> result ...
5月29日 14:24 投稿
成績管理システムの実装と改善
この記事では、C++を使用して成績管理システムを設計・実装する方法について説明します。以下のセクションで、クラス設計、コード例、およびいくつかの問題に対する回答を提供します。
1. システム概要
成績管理システムは、学生の成績を入力、出力、並べ替え、統計情報を計算する機能を備えています。
1.1 主なクラス設計
主なクラスである GradeManager には、次のメソ ...
5月29日 07:49 投稿
二分探索木の有効性検証:中間順走査によるアプローチ
問題の概要
二分探索木(BST)が有効であるかどうかを判定するには、各ノードが以下の条件を満たしているかを確認する必要があります。
ノードの左部分木に含まれるすべての値は、そのノードの値より厳密に小さい。
ノードの右部分木に含まれるすべての値は、そのノードの値より厳密に大きい。
左右の部分木もそれぞれ二分探索木でなければならない。
これを効率的にチェ ...
5月29日 04:49 投稿
最小部分文字列の探索:スライディングウィンドウ手法の実装
問題定義
2つの文字列 s と t が与えられた場合、s 内の部分文字列の中で、t のすべての文字(重複を含む)を含む最小の長さを持つものを見つけます。該当する部分文字列が存在しない場合は空文字列を返します。
この問題は、スライディングウィンドウ(Sliding Window)アルゴリズムの典型例です。左右2つのポインタを用いてウィンドウの範囲を動的に管理することで、効率 ...
5月29日 02:43 投稿
配列と連結リストの基本アルゴリズムと実装例
配列の二分探索
昇順に整列された重複のない配列から要素を検索する際、二分探索は効率的な手法です。左閉右閉区間と左閉右開区間の2つのアプローチを解説します。
左閉右閉区間アプローチ
class Solution {
public:
int binarySearch(const vector<int>& arr, int target) {
int low = 0;
int high = arr.size() - 1;
while (low tar ...
5月28日 21:40 投稿
配列パラメータの扱いにおけるC++での注意点
C++において、関数の引数として配列を渡す際に重要なポイントがあります。特に、const char str[N]を使用すると予期しない問題が発生することがあります。この記事では、その問題と解決策について詳しく説明します。
問題点: 配列の退化
まず、const char str[N]という形で関数に配列を渡すと、コンパイラはこれをconst char*に変換してしまいます。この現象を「配列の退 ...
5月28日 21:30 投稿
AtCoder Beginner Contest 389 解法解説
A - 9x9
問題概要
1桁の数字同士の乗算結果を求める。
解法
入力文字列から数値を抽出して掛け算する実装を行えばよい。
実装コード
#include <bits/stdc++.h>
using namespace std;
#define int long long
typedef pair<int, int> pii;
const int mxn = 1e6 + 5;
void solve() {
string input;
cin >> input;
int a = input[0] - '0';
...
5月28日 14:34 投稿
上海大学プログラミングコンテスト2023春季ラウンド4の問題解説
A. 二分探索の学習
基本的な二分探索アルゴリズムを実装する問題です。指定された範囲内でターゲット値を見つけるために必要なステップ数を計算します。
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int binary_search_steps(int left, int right, int target) {
int steps = 0;
while (left <= r ...
5月28日 10:30 投稿
Trie辞書木の作成と操作(C++)
本記事では、C++を用いてTrie辞書木を作成し、文字列の挿入と全単語の巡回を実現する方法を説明します。
最終的な挿入テスト結果は以下のとおりです。
1 char : 件
2 word : 编程软件
3 char : 习
4 word : 编程学习
5 char : 网
6 word : 编程学习网
7 char : 门
8 word : 编程入门
辞書木の構造体は以下のとおりです。
1 #ifndef __DICTIONARYDATA_H__
2 #define __DICT ...
5月28日 01:39 投稿