大佬们请问一下,使用模拟为什么最后输出数组下标的时候不用加一啊
  • 板块P1161 开灯
  • 楼主huawuque404
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/8/30 21:52
  • 上次更新2023/11/3 00:16:14
查看原帖
大佬们请问一下,使用模拟为什么最后输出数组下标的时候不用加一啊
708821
huawuque404楼主2023/8/30 21:52

这里使用数组 arr 来模拟路灯的开关情况,那么 arr[0] 不是对应编号为 1 的路灯吗,所以最后的结果为什么不是数组下标加 1 呢?

import java.util.Scanner;

public class P1161 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 数组 arr 存储路灯的状态, 0 时代表关闭, 1 时代表打开
        int[] arr = new int[2000000];
        int n = in.nextInt();
        // 对路灯执行 n 次操作
        for (int i = 0; i < n; i++) {
            double a = in.nextDouble(), t = in.nextDouble();
            for (int j = 1; j <= t; j++) {
                // 路灯关闭就打开, 打开则关闭
                if (arr[(int)(a * j)] == 0) {
                    arr[(int)(a * j)] = 1;
                } else {
                    arr[(int)(a * j)] = 0;
                }
            }
        }
        // 数组元素为 1 时表示打开, 遍历数组, 遇到 1 则输出下标
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == 1) {
                System.out.println(i);
                break;
            }
        }
        in.close();
    }
}
2023/8/30 21:52
加载中...