首页 文章资讯内容详情

C ++中的灯泡切换器II

2026-06-04 1 花语

假设有一个房间,其中最初打开的是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