农夫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++写程序!有哪位人能解决?
灯光开关切换(c ):数组问题
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
关注 【以下回答由 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之间亮着的灯泡数量,并将结果输出。
这样就能解决这个问题。
注意:这里假设输入是合法的且按照要求格式输入的。如果输入不符合要求,例如超出范围、格式错误等,需要添加相应的错误处理代码。
【相关推荐】
- 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7425445
如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 如何让子窗口鼠标滚动独立,不要传递消息给主窗口
- ¥15 如何能达到用ping0.cc检测成这样?如图
- ¥15 关于#DMA固件#的问题,请各位专家解答!
- ¥15 matlab生成的x1图不趋于稳定,之后的图像是稳定的水平线
- ¥15 请问华为OD岗位的内部职业发展通道都有哪些,以及各个级别晋升的要求
- ¥20 微信小程序 canvas 问题
- ¥15 系统 24h2 专业工作站版,浏览文件夹的图库,视频,图片之类的怎样删除?
- ¥15 怎么把512还原为520格式
- ¥15 MATLAB的动态模态分解出现错误,以CFX非定常模拟结果为快照
- ¥15 求高通平台Softsim调试经验