Di sini kita akan melihat soalan yang menarik. Katakan anda diberi tatasusunan binari saiz n. Di sini n > 3. Nilai benar atau 1 menunjukkan status aktif, dan nilai 0 atau salah menunjukkan status tidak aktif. Satu lagi nombor k juga diberikan. Kita perlu mencari sel aktif atau tidak aktif selepas k hari. selepas setiap masa Status siang hari sel ke-i adalah aktif jika sel kiri dan kanan tidak sama, dan tidak aktif jika ia sama. Tiada sel sebelum atau selepas sel paling kiri dan paling kanan. Oleh itu, sel paling kiri dan paling kanan sentiasa 0.
Mari kita lihat contoh untuk memahami idea ini. Katakan tatasusunan kelihatan seperti {0, 1, 0, 1, 0, 1, 0, 1} dengan nilai k = 3. Mari kita lihat bagaimana ia berubah dari hari ke hari.
Jadi 2 sel aktif dan 6 sel tidak aktif
begin make a copy of arr into temp for i in range 1 to k, do temp[0] := 0 XOR arr[1] temp[n-1] := 0 XOR arr[n-2] for each cell i from 1 to n-2, do temp[i] := arr[i-1] XOR arr[i+1] done copy temp to arr for next iteration done count number of 1s as active, and number of 0s as inactive, then return the values. end
#include <iostream> using namespace std; void activeCellKdays(bool arr[], int n, int k) { bool temp[n]; //temp is holding the copy of the arr for (int i=0; i<n ; i++) temp[i] = arr[i]; for(int i = 0; i<k; i++){ temp[0] = 0^arr[1]; //set value for left cell temp[n-1] = 0^arr[n-2]; //set value for right cell for (int i=1; i<=n-2; i++) //for all intermediate cell if left and right are not same, put 1 temp[i] = arr[i-1] ^ arr[i+1]; for (int i=0; i<n; i++) arr[i] = temp[i]; //copy back the temp to arr for the next iteration } int active = 0, inactive = 0; for (int i=0; i<n; i++) if (arr[i]) active++; else inactive++; cout << "Active Cells = "<< active <<", Inactive Cells = " << inactive; } main() { bool arr[] = {0, 1, 0, 1, 0, 1, 0, 1}; int k = 3; int n = sizeof(arr)/sizeof(arr[0]); activeCellKdays(arr, n, k); }
Active Cells = 2, Inactive Cells = 6
Atas ialah kandungan terperinci Apakah sel yang aktif dan tidak aktif selepas k hari?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!