当前位置:首页 > 牛客 > 牛客22296题解:关灯游戏胜负判断的模拟算法与代码实现

牛客22296题解:关灯游戏胜负判断的模拟算法与代码实现

1天前

牛客22296题解:关灯游戏胜负判断的模拟算法与代码实现 牛客题解 模拟 C++ 第1张

一、题目解读

牛客22296题描述了一个关灯游戏:有n个灯泡,每个灯泡初始状态为关闭(0)或打开(1)。玩家Alice和Bob轮流操作,最后操作最后一个灯泡的人获胜。题目要求根据输入的灯泡状态序列,判断最终获胜者。核心在于通过状态序列推断最后一次操作的对象,从而确定胜负。

二、解题思路

采用简单模拟策略解题。代码通过循环依次读取每个灯泡的状态,仅记录最后一个灯泡的状态(last_bulb)。由于胜负取决于最后一个灯泡的操作权,无需考虑中间状态变化,直接根据最后状态判断:若last_bulb为打开(1),则Alice获胜;否则Bob获胜。该解法时间复杂度O(n),空间复杂度O(1),高效直观。

三、解题步骤

1. 初始化变量last_bulb = 0,表示初始状态未知或未记录。

2. 循环读取n个灯泡状态:

○ 若当前为最后一个灯泡(i == n - 1),更新last_bulb为当前状态。

3. 根据last_bulb值输出获胜者:若为1则输出"Alice",否则输出"Bob"。

四、代码与注释

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

五、总结

本题通过简化问题本质,将复杂游戏规则转化为对最后一个状态的追踪,避免了繁琐的逻辑模拟。代码利用循环直接获取关键信息,体现了“抓住核心,忽略冗余”的解题思想。掌握此类简化策略,对处理类似逻辑判断问题具有启发意义。

原创内容 转载请注明出处

分享给朋友:

相关文章

70.爬楼梯|三步破解动态规划核心奥秘

70.爬楼梯|三步破解动态规划核心奥秘

题意新解:站在楼梯底仰望n级台阶,每步可选1或2阶,最终的路径组合犹如斐波那契数列般展开。比如到达第3阶的路径可由第1阶跨两步,或第2阶跨一步构成,这种递推规律揭示了两两相邻状态间的紧密关联。思路解析...

力扣1472题解:浏览器历史记录模拟(C++代码实现与详细解析)

力扣1472题解:浏览器历史记录模拟(C++代码实现与详细解析)

一、题目解读力扣1472题要求设计一个“浏览器历史记录”类,支持以下功能:    1. 初始化浏览器,指定首页URL;   &nb...

牛客14496题解:括号最大深度问题(栈思想与代码优化)

牛客14496题解:括号最大深度问题(栈思想与代码优化)

一、题目解读牛客14496题要求计算给定括号字符串中的最大深度。例如,对于字符串 "(()())",最大深度为2。题目考察对括号嵌套结构的理解,以及如何通过编程找到最深嵌套层次。二...

【洛谷1184题解析】用C++高效解决地点匹配问题(附代码与解题思路)

【洛谷1184题解析】用C++高效解决地点匹配问题(附代码与解题思路)

一、题目解读洛谷1184题要求处理一组地点列表与行程记录,统计其中匹配的天数。题目难点在于高效处理带有空格的字符串输入,以及快速判断每日行程是否在高手可去地点集合中。需要兼顾输入格式解析与算法效率。二...

洛谷1220题解:动态规划与区间DP优化解法(附代码注释)

洛谷1220题解:动态规划与区间DP优化解法(附代码注释)

一、题目解读洛谷1220题要求计算在n个位置放置灯的情况下,通过关闭连续区间灯并移动至区间端点,使得总耗电量最小。需考虑灯的功率与位置差异,设计高效的算法求解最优策略。二、解题思路1. 动态规划 +...

牛客NC67题解:汉诺塔递归算法与解题步骤

牛客NC67题解:汉诺塔递归算法与解题步骤

一、题目解读牛客NC67题要求解决汉诺塔问题,这是一个经典的递归算法题目。题目给定整数n,代表汉诺塔中的盘子数量,需要输出将n个盘子从起始柱移动到目标柱的所有步骤。汉诺塔问题规则为:每次只能移动一个盘...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。