Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

Bulb Switcher II ใน C++


สมมติว่ามีห้องหนึ่งที่มีไฟ n ดวงซึ่งเปิดอยู่ตอนแรกและมีปุ่ม 4 ปุ่มอยู่บนผนัง หลังจากดำเนินการ m ที่ไม่รู้จักกับปุ่ม เราต้องส่งคืนสถานะของไฟ n แบบต่างๆ ที่สามารถเป็นได้ ดังนั้นให้พิจารณาว่าไฟ n ดวงมีป้ายกำกับเป็นหมายเลข [1, 2, 3 ..., n] หน้าที่ของปุ่มทั้ง 4 ปุ่มมีดังนี้ −

  • พลิกไฟทั้งหมด
  • ไฟเลี้ยวที่มีเลขคู่
  • ไฟเลี้ยวที่มีเลขคี่
  • ไฟเลี้ยวพร้อมตัวเลข (3k + 1), k =0, 1, 2, ...

ตอนนี้ถ้า n =3 และ m =1 จะมี 4 การดำเนินการ ได้แก่ [ปิด, เปิด, ปิด], [เปิด, ปิด, เปิด], [ปิด, ปิด, ปิด], [ปิด, เปิด, เปิด ]

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • ถ้า 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