Xiaomi的遗憾 2023-11-19 14:55 采纳率: 100%
浏览 7
已结题

灯光开关切换(c ):数组问题

农夫JOHN为了保持奶牛拥有一个聪明的脑袋(很令人怀疑,囧),所以让它们玩脑力开发玩具。其中一个较大型的玩具就是在牛棚中的电灯。农场中总共有N(2<=N<=500)个牛棚,每个牛棚上方都有一个编号为1到N的彩色灯泡。
傍晚时分,所有的灯泡都是关闭着的。奶牛们通过N个按钮来控制着灯泡的开与关。按下编号为I的按钮会使编号为I的灯泡的状态改变,比如从开到关,从关到开。
奶牛们阅读并执行一个由M(1<=M<=2000)个操作符和它的参数所组成的操作清单。每个操作符由一个整数表示(0<=操作符<=1)。
编号为0的操作符包括2个参数,S_i和E_i(1<=S_i<=E_i<=N),要求奶牛依次按下了从第S_i号开关到第E_i号的开关。
编号为1的操作符仍然有2个参数,S_i和E_i。这条命令要求奶牛数出在第S_i号和第E_i号灯泡之中,有多少灯泡是亮着的。
请你帮助农夫JOHN确定奶牛是否按下了正确的按钮和数出正确的答案。
请你用C++写程序!有哪位人能解决?

  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-11-20 04:12
    关注

    【以下回答由 GPT 生成】

    这是一个简单的奶牛灯光开关控制问题,可以用C++编写程序来解决。

    首先,我们需要定义一个长度为N的数组来表示每个灯泡的状态,初始值都为0表示灯泡是关闭的。

    然后,我们可以按照操作列表来执行每个操作。对于每个操作,如果操作符是0,则将从Si到Ei的灯泡状态取反;如果操作符是1,则计算从Si到Ei之间亮着的灯泡数量,并将结果输出。

    下面是具体的代码实现:

    #include <iostream>
    #include <vector>
    
    using namespace std;
    
    int main() {
        int N, M;
        cin >> N >> M;
    
        vector<int> bulbs(N, 0);
    
        for (int i = 0; i < M; i++) {
            int op, Si, Ei;
            cin >> op >> Si >> Ei;
    
            if (op == 0) {
                for (int j = Si - 1; j <= Ei - 1; j++) {
                    bulbs[j] = !bulbs[j];
                }
            }
            else if (op == 1) {
                int count = 0;
                for (int j = Si - 1; j <= Ei - 1; j++) {
                    count += bulbs[j];
                }
                cout << count << endl;
            }
        }
    
        return 0;
    }
    

    这个程序首先读取输入的N和M,然后创建一个大小为N的容器来存储灯泡的状态。

    接下来,循环读取每个操作,并根据操作符来执行相应的动作:对于操作符为0的操作,将从Si到Ei之间的灯泡状态取反;对于操作符为1的操作,计算从Si到Ei之间亮着的灯泡数量,并将结果输出。

    这样就能解决这个问题。

    注意:这里假设输入是合法的且按照要求格式输入的。如果输入不符合要求,例如超出范围、格式错误等,需要添加相应的错误处理代码。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月28日
  • 已采纳回答 11月20日
  • 创建了问题 11月19日

悬赏问题

  • ¥15 如何让子窗口鼠标滚动独立,不要传递消息给主窗口
  • ¥15 如何能达到用ping0.cc检测成这样?如图
  • ¥15 关于#DMA固件#的问题,请各位专家解答!
  • ¥15 matlab生成的x1图不趋于稳定,之后的图像是稳定的水平线
  • ¥15 请问华为OD岗位的内部职业发展通道都有哪些,以及各个级别晋升的要求
  • ¥20 微信小程序 canvas 问题
  • ¥15 系统 24h2 专业工作站版,浏览文件夹的图库,视频,图片之类的怎样删除?
  • ¥15 怎么把512还原为520格式
  • ¥15 MATLAB的动态模态分解出现错误,以CFX非定常模拟结果为快照
  • ¥15 求高通平台Softsim调试经验