问题核心分析 牛客22296题灯游戏是一个典型的博弈论问题,关键在于分析**一个灯泡的状态。游戏规则要求每次操作必须选择一个亮着的灯泡,并翻转该灯泡及其右侧所有灯泡的状态。 胜负判定策略通过观察可以发现,游戏的胜负实际上由**一个灯泡的初始状态决定:
C++实现代码- #include <iostream>
- using namespace std;
- int main() {
- int n;
- cin >> n;
-
- int last_bulb = 0;
- for (int i = 0; i < n; ++i) {
- int state;
- cin >> state;
- if (i == n - 1) {
- last_bulb = state;
- }
- }
-
- cout << (last_bulb ? "Alice" : "Bob") << endl;
- return 0;
- }
复制代码
算**确性证明复杂度分析时间复杂度:O(n),只需遍历一次灯泡序列 空间复杂度:O(1),仅需存储**一个灯泡的状态
扩展思考
|