Rumah > Artikel > pembangunan bahagian belakang > 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.
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
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
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” 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
#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; }
Jika kita menjalankan program di atas, ia akan menghasilkan output berikut −
rreeeAtas 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!