>백엔드 개발 >C++ >k일 후에 활성 세포와 비활성 세포는 무엇입니까?

k일 후에 활성 세포와 비활성 세포는 무엇입니까?

PHPz
PHPz앞으로
2023-08-25 15:57:061078검색

k일 후에 활성 세포와 비활성 세포는 무엇입니까?

여기서 흥미로운 질문을 보게 될 것입니다. 크기 n의 이진 배열이 주어졌다고 가정합니다. 여기서 n > 3입니다. true 또는 1 값은 활성 상태를 나타내고, 0 또는 false 값은 비활성 상태를 나타냅니다. 또 다른 숫자 k도 주어진다. k일 후에 활성 또는 비활성 셀을 찾아야 합니다. 매번 후에 i번째 셀의 주간 상태는 왼쪽 셀과 오른쪽 셀이 동일하지 않으면 활성 상태이고, 동일하면 비활성 상태입니다. 가장 왼쪽과 가장 오른쪽 셀의 앞이나 뒤에는 셀이 없습니다. 따라서 가장 왼쪽과 가장 오른쪽 셀은 항상 0입니다.

이 아이디어를 이해하기 위해 예를 살펴보겠습니다. 배열이 k = 3인 {0, 1, 0, 1, 0, 1, 0, 1}과 같다고 가정합니다. 날마다 어떻게 변하는지 살펴보겠습니다.

  • 1일 후 배열은 {1, 0, 0, 0, 0, 0, 0, 0}이 됩니다.
  • 2일 후 배열은 {0, 1, 0, 0, 0, 0이 됩니다. , 0, 0 }
  • 3일 후 배열은 {1, 0, 1, 0, 0, 0, 0, 0}

그러므로 2개의 활성 셀과 6개의 비활성 셀

Algorithm

activeCellKdays( arr , n, k)

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

위 내용은 k일 후에 활성 세포와 비활성 세포는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제