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

C++の電球スイッチャーII


最初にオンになっているn個のライトがあり、壁に4つのボタンがある部屋があるとします。ボタンに対して正確にm個の未知の操作を実行した後、n個のライトのさまざまな種類のステータスを返す必要があります。したがって、n個のライトに番号[1、2、3 ...、n]のラベルが付いているとすると、これら4つのボタンの機能は次のようになります-

  • すべてのライトを反転します。
  • 偶数のライトを反転させます。
  • 奇数のライトを反転させます。
  • (3k + 1)の数字、k =0、1、2、...のフリップライト

ここで、n=3およびm=1の場合、4つの操作があります。これらは、[off、on、off]、[on、off、on]、[off、off、off]、[off、on、on ]

これを解決するには、次の手順に従います-

  • nが0またはmが0の場合、1を返します
  • nが1の場合、2を返します
  • nが2の場合は3を返し、mが1の場合は4を返します。
  • mが1の場合、4を返します
  • mが2の場合は、7を返し、それ以外の場合は8を返します。

理解を深めるために、次の実装を見てみましょう-

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   int flipLights(int n, int m) {
      if (m == 0 || n == 0) return 1;
      if (n == 1) return 2;
      if (n == 2) return m == 1? 3:4;
      if (m == 1) return 4;
      return m == 2? 7:8;
   }
};
main(){
   Solution ob;
   cout << (ob.flipLights(3, 1));
}

入力

3
1

出力

4

  1. C++の電球スイッチャーIII

    n個の電球がある部屋があるとします。これらの電球には、1からnまでの番号が付けられ、左から右に一列に並んでいます。最初は、すべての電球がオフになっています。瞬間k(0からn-1の範囲のkの場合)で、light[k]電球をオンにします。電球がオンになっていて、前のすべての電球(左側)もオンになっている場合にのみ、電球の色が青に変わります。オンになっているすべての電球が青色になっている瞬間の数を見つける必要があります。これが例です- モーメントが1、2、4であるため、出力は3になります。 これを解決するには、次の手順に従います- ret:=0、セットxを定義、n:=リスト配列のサイ

  2. C ++で「オブジェクトを返す」方法は?

    オブジェクトはクラスのインスタンスです。メモリは、オブジェクトが作成されたときにのみ割り当てられ、クラスが定義されたときは割り当てられません。 returnキーワードを使用して、関数からオブジェクトを返すことができます。これを実証するプログラムは次のとおりです- 例 #include <iostream> using namespace std; class Point {    private:    int x;    int y;    public:    Point(in