Codeforces Round 998 (Div.3) 解説: A-D問題の解法と実装例
コンテスト参加後の復習と解法の整理を行います。問題AからDまでのアプローチとコードをまとめました。
A. Fibonacciness
5要素の数列における最大の「フィボナッチ度」を求める問題です。数列の長さが5であるため、最大でも度は3となります。各位置で成立するフィボナッチ関係の式を検討します。
具体的には、a0+a1 = a2、a1+a2 = a3、a2+a3 = a4の3つの条件が考えら ...
6月22日 17:44 投稿
宿舎管理システムの設計と実装(C言語によるデータ構造の応用)
概要
本稿では、データ構造とアルゴリズムに関する課題として開発した「宿舎管理照会ソフトウェア」について紹介する。学生の宿舎情報を効率的に管理・検索・操作することを目的とし、C言語で実装された単方向連結リストを基盤としたシステムである。主な機能には、学生情報の追加・削除・検索・ソート・表示が含まれる。ユーザーインターフェースはテキストベースのメニュ ...
5月30日 11:45 投稿
双指针アルゴリズムによる合計問題の解法
2つの数の合計が特定の値になる場合
配列がソートされている場合、双指針法を用いて効率的に解決できます。左端と右端から開始し、合計値を比較してポインタを移動します。
public class SumSolution {
public static int[] findTwoSum(int[] arr, int target) {
int start = 0;
int end = arr.length - 1;
while (start < end) {
...
5月28日 13:34 投稿
JavaのジェネリクスとObjectの比較
この記事では、メソッドが複数のオブジェクトタイプを受け入れるようにするためにジェネリクスとObjectを使用する際の違いについて説明します。
まず、具体的な例を挙げてみましょう。例えば、Javaの数値型(Double、Float、Byte、Short、Integer、Long)に対するソートアルゴリズムを考えます。
方法1: 各数値型ごとにメソッドを定義する
この方法では6つの異なるメソッド ...
5月19日 21:45 投稿
C++を用いたコンテスト参加者情報管理システムの実装
contestant.hpp
#pragma once
#include <iomanip>
#include <iostream>
#include <string>
struct Participant {
long studentId;
std::string fullName;
std::string department;
int problemCount;
int totalTime;
};
std::ostream& operator<<(std::ostream& out, const Participant& p) {
out << s ...
5月19日 19:33 投稿
ソートアルゴリズム(Java版)
1. バブルソート
バブルソートは、単純で直感的なソートアルゴリズムです。配列を繰り返し走査し、隣接する要素を比較して順序が逆であれば交換します。このプロセスを、配列が完全にソートされるまで繰り返します。このアルゴリズムの名前は、小さい要素が「泡」として徐々に配列の先頭に「浮かび上がって」いく様子に由来します。
アルゴリズムのステップ:
隣接する要素 ...
5月17日 05:18 投稿