> 백엔드 개발 > C++ > 본문

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

PHPz
풀어 주다: 2023-08-25 15:57:06
앞으로
1050명이 탐색했습니다.

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으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿