ホームページ  >  記事  >  バックエンド開発  >  配列内の特定の値を検索する C++ プログラム

配列内の特定の値を検索する C++ プログラム

WBOY
WBOY転載
2023-08-30 19:21:06881ブラウズ

配列内の特定の値を検索する C++ プログラム

n 個の並べ替えられた整数値を含む配列「arr」があるとします。また、サイズ q の配列 "query" も与えられており、"query" の値が指定された配列 "arr" に存在するかどうかを確認する必要があります。クエリの値が arr に存在する場合は、「exists」と値の場所を出力します。それ以外の場合は、「存在しません」と出力され、クエリ内の値より大きい最小値が存在する arr 内の位置が出力されます。配列のインデックスは 1 であることを覚えておく必要があります。

入力が n = 8、arr = {1、2、3、4、7、9、12、15}、q = 3、query = {1、5、8} のような場合, 出力は

Present 1
Not present 5
Not present 6

です。クエリの最初の値は arr の位置 1 に表示されます。

クエリの 2 番目の値は arr に表示されます。クエリの値より大きい最小値の位置は 5 です。

同様に、arr にはクエリの 3 番目の値はありません。これより大きい値は arr の 6 番目の位置にあります。

この問題を解決するには、次の手順に従います。 -

  • 配列値を定義します。
  • 初期化の場合、i := 0、i
  • 値の末尾に arr[i] を挿入します。
  • i := 0 を初期化します。i
  • idx: = (query[i] 以上の値の最初の要素の位置) -値の最初の要素の位置## を実行します。
  • #values[idx] が query[i] と同じ場合、 -
    • print("Exists")
  • それ以外の場合、
    • print("存在しません ")
  • print(idx 1)
  • Example

    Letより深く理解するには、次の実装を参照してください -

    #include <vector>
    #include <iostream>
    using namespace std;
    
    void solve(int n, int arr[], int q, int query[]) {
       vector<int> values;
       for(int i = 0; i < n; i++){
          values.push_back(arr[i]);
       }
       for(int i = 0; i < q; i++) {
          int idx = lower_bound (values.begin(), values.end(),
          query[i]) - values.begin();
          if (values[idx] == query[i])
             cout << "Present ";
          else
             cout << "Not present ";
          cout << idx + 1 << endl;
       }
    }
    int main() {
       int input_arr[] = {1, 2, 3, 4, 7, 9, 12, 15};
       int query_arr[] = {1, 5, 8};
       solve(8, input_arr, 3, query_arr);
       return 0;
    }

    Input (標準入力)

    int input_arr[] = {1, 2, 3, 4, 7, 9, 12, 15};
    int query_arr[] = {1, 5, 8};
    solve(8, input_arr, 3, query_arr);

    Output

    Present 1
    Not present 5
    Not present 6

    以上が配列内の特定の値を検索する C++ プログラムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

  • 声明:
    この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。