Hier sehen wir eine interessante Frage. Angenommen, Sie erhalten ein binäres Array der Größe n. Hier ist n > 3. Der Wert „true“ oder „1“ gibt den aktiven Status an, während der Wert „0“ oder „false“ den inaktiven Status angibt. Eine weitere Zahl k ist ebenfalls angegeben. Wir müssen nach k Tagen aktive oder inaktive Zellen finden. nach jedem Mal Der Tagesstatus der i-ten Zelle ist aktiv, wenn die linke und rechte Zelle nicht identisch sind, und inaktiv, wenn sie identisch sind. Es gibt keine Zellen vor oder nach den Zellen ganz links und rechts. Daher sind die Zellen ganz links und ganz rechts immer 0.
Schauen wir uns ein Beispiel an, um diese Idee zu verstehen. Angenommen, ein Array sieht aus wie {0, 1, 0, 1, 0, 1, 0, 1} mit dem Wert k = 3. Mal sehen, wie es sich von Tag zu Tag verändert.
Also 2 aktive Zellen und 6 inaktive Zellen
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
Das obige ist der detaillierte Inhalt vonWas sind die aktiven und inaktiven Zellen nach k Tagen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!