Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

k日後のアクティブおよび非アクティブセル?


ここで、1つの興味深い問題が発生します。サイズnのバイナリ配列が1つ与えられたとします。ここで、n> 3です。真の値または1の値はアクティブ状態を示し、0または偽の値は非アクティブを示します。別の数kも与えられます。 k日後にアクティブまたは非アクティブなセルを見つける必要があります。左右のセルが同じでない場合は、i番目のセルの日常の状態がアクティブになり、同じ場合は非アクティブになります。左端と右端のセルには、前後にセルがありません。したがって、左端と右端のセルは常に0です。

アイデアを得るために1つの例を見てみましょう。 1つの配列が{0、1、0、1、0、1、0、1}のようで、k =3の値であると仮定します。それでは、それが日ごとにどのように変化するかを見てみましょう。

  • 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つの非アクティブセル

アルゴリズム

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

  1. Excelでセル、列、行を結合する方法

    Microsoft Excelで本文をフォーマットする方法によっては、セルを結合する必要がある場合があります。理由が何であれ、使用できるテクニックはいくつかあります。これらは、セル、行、および列のマージを実現するのに役立ちます。一部のメソッドはセル内の一部のデータを削除するため、最終結果をどのように表示するかを事前に決定する必要があります。 セルのマージ 組み込みのマージオプションは、MicrosoftExcelの[ホーム]タブにあります。 使用可能なマージオプションは次のとおりです。 マージとセンター :このオプションは、セルを1つに結合し、テキストを中央に配置します。ただし、左端の

  2. Excel のシートとブックの間でセルをリンクする

    Microsoft Excel は、誰でも使用できる非常に強力な多目的ツールです。ただし、毎日スプレッドシートを使用する場合は、Excel の基本的な使い方だけでなく、それ以上の知識が必要になる場合があります。いくつかの簡単なコツを知っていれば、Excel を大いに活用できます。良い例は、シートとワークブックの間で Excel のセルをリンクする方法を知っていることです。 これを学ぶことで、長い目で見れば多くの時間と混乱を避けることができます。 Excel でセル データをリンクする理由 異なるシート間でデータを参照できることは、いくつかの理由で価値のあるスキルです。 まず、スプ