Program C++ untuk mencari nilai tertentu dalam tatasusunan

WBOY
Lepaskan: 2023-08-30 19:21:06
ke hadapan
930 orang telah melayarinya

Program C++ untuk mencari nilai tertentu dalam tatasusunan

Andaikan kita mempunyai tatasusunan "arr" yang mengandungi n nilai integer yang diisih. Kami juga diberi tatasusunan "pertanyaan" bersaiz q dan kami perlu mengetahui sama ada nilai dalam "pertanyaan" hadir dalam tatasusunan "arr" yang diberikan. Jika nilai dalam pertanyaan wujud dalam arr, cetak "wujud" dan lokasi nilai. Jika tidak, kami mencetak "tidak wujud" dan mencetak kedudukan dalam arr di mana nilai minimum yang lebih besar daripada nilai dalam pertanyaan terletak. Kita harus ingat bahawa tatasusunan adalah 1-diindeks.

Jadi jika input adalah seperti n = 8, arr = {1, 2, 3, 4, 7, 9, 12, 15} , q = 3, pertanyaan = {1, 5, 8}, output ialah

Present 1
Not present 5
Not present 6
Salin selepas log masuk

Nilai pertama yang ditanya muncul dalam kedudukan 1 arr.

Nilai kedua pertanyaan muncul dalam arr. Kedudukan nilai terkecil yang lebih besar daripada nilai dalam pertanyaan ialah 5.

Begitu juga, tiada nilai ketiga pertanyaan dalam arr. Nilai yang lebih besar daripada ini berada pada kedudukan 6 arr.

Untuk menyelesaikan masalah ini, kami akan mengikuti langkah berikut -

  • Tentukan nilai tatasusunan
  • Untuk permulaan i := 0, apabila i < n, kemas kini (kenaikan i sebanyak 1), laksanakan - < n 时,更新(将 i 增加 1),执行 -
    • dalam nilai Masukkan arr[i] pada penghujung
  • Inisialisasikan i := 0, apabila i < q, kemas kini (naikkan i sebanyak 1), laksanakan -< q 时,更新(将 i 增加 1),执行 -
    • idx : = (yang pertama dalam nilai yang tidak kurang daripada pertanyaan[i] Kedudukan elemen) -Kedudukan elemen pertama dalam nilai
    • Jika nilai[idx] sama dengan pertanyaan[i], maka-
      • print("Wujud")
    • Jika tidak,
      • print("Tidak wujud ")
    • print(idx + 1)

Contoh

Mari kita rujuk pelaksanaan berikut untuk pemahaman yang lebih baik -

Input Input (

)

#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;
}
Salin selepas log masuk

Output

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

Atas ialah kandungan terperinci Program C++ untuk mencari nilai tertentu dalam tatasusunan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan