自作関数を使って4つの整数の最大値を求めるC言語プログラム
4つの数 a、b、c、d が与えられたとき、自分で定義した関数を使ってそれらの中から最大値を求めることを考えます。
そこで今回は、2つの数を受け取って大きい方を返す max() 関数を作成し、この関数を組み合わせることで4つの数すべての最大値を求めます。
例えば、入力が a = 5、b = 8、c = 2、d = 3 の場合、出力は 8 になります。
解き方の手順
- 2つの引数
xとyを受け取る関数max()を定義する xとyのうち大きい方の値を返す- 4つの数
a、b、c、dを用意する left_max = max(a, b)として前半2つの最大値を求めるright_max = max(c, d)として後半2つの最大値を求めるfinal_max = max(left_max, right_max)として全体の最大値を求めるfinal_maxを結果として返す
実装例
以下の実装例を見ると、処理の流れがより理解しやすくなります。
#include <stdio.h>
int max(int x, int y){
if(x > y){
return x;
}else{
return y;
}
}
int main(){
int a = 5, b = 8, c = 2, d = 3;
int left_max = max(a, b);
int right_max = max(c, d);
int final_max = max(left_max, right_max);
printf("Maximum number is: %d", final_max);
}入力
a = 5, b = 8, c = 2, d = 3
出力
Maximum number is: 8
ポイント解説
このアプローチのポイントは、問題を小さく分割して考えることです。4つの数をいきなり比較するのではなく、「2つの数の最大値」を求めるシンプルな関数を一度だけ定義すれば、あとはそれを再利用するだけで済みます。
まず (a, b) と (c, d) のペアごとに最大値を求め、最後にその2つの結果を比較することで、全体の最大値が効率的に得られます。この手法は「分割統治法」の基本的な考え方にも通じており、より多くの要素から最大値・最小値を求める場合にも応用できます。
-
【C言語】再帰関数を使って2つの整数の最大公約数(GCD)を求める方法
問題 C言語において再帰関数を使用し、与えられた2つの整数の最大公約数(GCD:Greatest Common Divisor)を求めます。 解決策 再帰関数を用いて2つの整数の最大公約数を求めるには、「ユークリッドの互除法」が利用できます。これは「2つの数のGCDは、大きい方の数を小さい方の数で割った余りと、小さい方の数とのGCDに等しい」という性質を応用した手法です。この計算を余りが0になるまで再帰的に繰り返すことで、GCDを効率よく求めることができます。 アルゴリズム 再帰関数を使って2つの整数のGCDを求めるためのアルゴリズムは、以下の手順に従います。 ステップ1 − 再帰関数を
-
Pythonで制約付きの建物の最大高さを求めるプログラム
問題の概要整数 n と制約リスト restrictions が与えられたとします。私たちは都市に n 棟の新しい建物を一列に建てようとしていますが、高さに関するいくつかの制限があります。建物には左から順に 1 から n までの番号が付けられており、各制約は restrictions[i] = (id_i, max_height_i) の形式で表され、「id_i 番の建物の高さは max_height_i 以下でなければならない」ことを意味します。建物の高さに関する都市の規則は以下のとおりです。各建物の高さは 0 以上でなければなりません。1 番の建物(最初の建物)の高さは必ず 0 です。隣接す