Computer >> Máy Tính >  >> Lập trình >> C ++

Bulb Switcher II trong C ++

Giả sử có một căn phòng ban đầu bật n đèn và trên tường có 4 nút. Sau khi thực hiện chính xác m thao tác chưa biết đối với các nút, chúng ta cần trả về có bao nhiêu loại trạng thái khác nhau của n đèn. Vậy coi n đèn được đánh dấu là số [1, 2, 3 ..., n], chức năng của 4 nút này như sau -

  • Lật tất cả các đèn.
  • Đèn lật có số chẵn.
  • Đèn lật có số lẻ.
  • Đèn lật có số (3k + 1), k =0, 1, 2, ...

Bây giờ nếu n =3 và m =1, thì sẽ có 4 hoạt động, đó là, [tắt, bật, tắt], [bật, tắt, bật], [tắt, tắt, tắt], [tắt, bật, bật ]

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • nếu n là 0 hoặc m là 0, thì trả về 1
  • nếu n là 1, thì trả về 2
  • nếu n là 2 thì trả về 3, khi m là 1, ngược lại trả về 4
  • nếu m là 1, thì trả về 4
  • nếu m là 2 thì trả về 7, ngược lại thì trả về 8.

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

Ví dụ

#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));
}

Đầu vào

3
1

Đầu ra

4