C++實現的燈泡開關 II
假設一個房間裡有 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,當 m 為 1 時返回 3,否則返回 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
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP