数组运算出错了怎么处理?
  • 板块P1161 开灯
  • 楼主冰封侠
  • 当前回复3
  • 已保存回复3
  • 发布时间2021/6/24 14:55
  • 上次更新2023/11/4 21:33:39
查看原帖
数组运算出错了怎么处理?
464739
冰封侠楼主2021/6/24 14:55

首先说一下自己的解题思路:想把每一盏灯都放入一个数组里,用{-1}表示关着的灯,用{1}表示开着的灯,然后进行反向操作的时候就乘上-1.

现在出现的问题是在以下这个代码中,light[num] 的值都从-1变成了0,想找人解释一下这是为什么

       for (int j = 1; j <= t; j++) {
            int num = floor(j * a);
            light[num] *= (-1);
        }

以下是整道题的代码

#include<iostream>
#include<cmath>
using namespace std;
int light[2000010] = {-1}, n;
int main() {
    cin >> n;
    for (int i = 1; i <= n; i++) {
        double a;
        int t;
        cin >> a >> t;
        for (int j = 1; j <= t; j++) {
            int num = floor(j * a);
            light[num] *= (-1);
        }
    }
    for (int i = 1; i <= 2000000; i++){
        if (light[i] == 1) {
            cout << i << endl;
            return 0;
        }
    }
    return 0;
}

2021/6/24 14:55
加载中...