Rumah > pembangunan bahagian belakang > C++ > Dalam program C, cetak pasangan elemen dengan nilai AND terbesar dalam tatasusunan

Dalam program C, cetak pasangan elemen dengan nilai AND terbesar dalam tatasusunan

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Lepaskan: 2023-08-29 19:41:11
ke hadapan
1200 orang telah melayarinya

Dalam program C, cetak pasangan elemen dengan nilai AND terbesar dalam tatasusunan

Menurut soalan, kita diberi tatasusunan yang mengandungi n integer positif, dan kita perlu mencari pasangan dengan nilai maksimum DAN daripada tatasusunan.

Contoh

Input: arr[] = { 4, 8, 12, 16 }
Output: pair = 8 12
The maximum and value= 8

Input:arr[] = { 4, 8, 16, 2 }
Output: pair = No possible AND
The maximum and value = 0
Salin selepas log masuk

Kaedah mencari nilai maksimum DAN serupa dengan mencari nilai maksimum DAN dalam tatasusunan. Program mesti mencari pasangan elemen yang menghasilkan nilai DAN yang terhasil. Untuk mencari elemen ini, hanya lelaran melalui keseluruhan tatasusunan dan cari nilai AND setiap elemen dengan nilai maksimum DAN (hasil) yang anda dapat, jika arr[i] & hasil == hasil, ia bermakna arr[i] ialah nilai AND maksimum yang akan dijana Elemen nilai AND. Tambahan pula, dalam kes di mana nilai maksimum DAN (hasil) adalah sifar, kita harus mencetak "tidak mungkin". Terjemahan

Algoritma

int checkBit(int pattern, int arr[], int n)
START
STEP 1: DECLARE AND INITIALIZE count AS 0
STEP 2: LOOP FOR i = 0 AND i < n AND i++
   IF (pattern & arr[i]) == pattern THEN,
      INCREMENT count BY 1
STEP 3: RETURN count
STOP
int maxAND(int arr[], int n)
START
STEP 1: DECLARE AND INITIALIZE res = 0 AND count
STEP 2: LOOP FOR bit = 31 AND bit >= 0 AND bit--
   count = GOTO FUNCTION checkBit(res | (1 << bit), arr,n)
   IF count >= 2 THEN,
      res |= (1 << bit);
   END IF
   IF res == 0
      PRINT "no possible AND&rdquo;
   ELSE
      PRINT "Pair with maximum AND= "
   count = 0;
   LOOP FOR int i = 0 AND i < n && count < 2 AND i++
      IF (arr[i] & res) == res THEN,
         INCREMENT count BY 1
         PRINT arr[i]
      END IF
   END FOR
END FOR
RETURN res
STOP
Salin selepas log masuk

Contoh

ialah:

Contoh

#include <stdio.h>
int checkBit(int pattern, int arr[], int n){
   int count = 0;
   for (int i = 0; i < n; i++)
      if ((pattern & arr[i]) == pattern)
         count++;
   return count;
}
// Function for finding maximum AND value pair
int maxAND(int arr[], int n){
   int res = 0, count;
   for (int bit = 31; bit >= 0; bit--) {
      count = checkBit(res | (1 << bit), arr, n);  
      if (count >= 2)
         res |= (1 << bit);
   }
   if (res == 0) //if there is no pair available
      printf("no possible and</p><p>");
   else { //Printing the pair available
      printf("Pair with maximum AND= ");
      count = 0;
      for (int i = 0; i < n && count < 2; i++) {
         // incremnent count value after
         // printing element
         if ((arr[i] & res) == res) {
            count++;
            printf("%d ", arr[i]);
         }
      }
   }
   return res;
}
int main(int argc, char const *argv[]){
   int arr[] = {5, 6, 2, 8, 9, 12};
   int n = sizeof(arr)/sizeof(arr[0]);
   int ma = maxAND(arr, n);
   printf("</p><p>The maximum AND value= %d ", ma);
   return 0;
}
Salin selepas log masuk

Output

Jika kita menjalankan program di atas, ia akan menghasilkan output berikut −

rreee

Atas ialah kandungan terperinci Dalam program C, cetak pasangan elemen dengan nilai AND terbesar dalam tatasusunan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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