全探索
全探索とは、ある問題に対してすべての可能性を試し、最適な解を求めるアルゴリズムの一種です。全探索は、一般にはある問題に対して正解を求めるためには必要な全ての組み合わせを網羅的に調べることにより、最適解を得る方法です。しかし、全探索は一般に計算量が非常に大きくなりがちなので、問題によっては効率的でないこともあります。
具体的には、全探索アルゴリズムは以下の手順に従います。
問題を分解して、可能な解の候補を列挙する
列挙した候補を一つずつ評価し、最適解を探す
最適解が見つかった場合、探索を終了する
例えば、数列の中から最大値を探す場合を考えると、以下のようなアルゴリズムが考えられます。
最初の数を最大値として選び、残りの数と比較する
次の数が現在の最大値より大きければ、その数を新しい最大値とする
残りの数がなくなるまで、2を繰り返す
最大値が見つかったら、探索を終了する
このアルゴリズムは非常に簡単であり、数列の要素数に比例する時間で解を求めることができます。ただし、数列の要素数が非常に大きい場合、このアルゴリズムは非常に時間がかかることがあります。そのため、より高速なアルゴリズムが必要な場合には、全探索以外のアルゴリズムを検討する必要があります。
数列の中から最大値を探す全探索
code:c
#include <stdio.h>
int main() {
int n, max, i;
int a100; // 最大100個の要素を持つ配列とする
printf("配列の要素数を入力してください: ");
scanf("%d", &n);
printf("%d個の整数を入力してください\n", n);
for (i = 0; i < n; i++) {
scanf("%d", &ai);
}
max = a0;
for (i = 1; i < n; i++) {
if (ai > max) {
max = ai;
}
}
printf("最大値は%dです\n", max);
return 0;
}