首页 > 解决方案 > 在电影院 java 中查找连续可用的免费座位

问题描述

所以我得到了一个 n x m 大小的二维数组和连续数量的空闲座位,我必须在其中找到并输出我找到它的第一行。二维数组中的元素由 1 和 0 组成,1 表示占用,0 表示空闲。我设法解决了 95% id 说......我的问题是我的代码不断输出最后一行,它找到了连续的免费座位,而不是第一个......

这是我的代码:

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        int n = scanner.nextInt(); // nr. of rows
        int m = scanner.nextInt(); // nr. of seats / row
        int[][] cinema = new int [n][m];

        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                cinema[i][j] = scanner.nextInt();
            }
        }
        int k = scanner.nextInt(); // nr. of consecutive available seats
        Boolean consec = false;
        int fff = 0; // final free consecutive seats found

        for (int i = 0; i < n; i++) {

            int cfs = 0; // current free seat / row

            for (int j = 0; j < m; j++) {
                if (cinema[i][j] == 0) {
                    cfs++;

                } else if (cinema[i][j] == 1) {
                    cfs = 0;
                }
                if (cfs == k) {
                    consec = true;
                    fff = i + 1;
                } else if (fff == 0) {
                    consec = false;
                }
            }
        }
        if (consec) {
            System.out.println(fff);
        } else System.out.println(0);
    }
}

我究竟做错了什么?

标签: javaarrays

解决方案


推荐阅读