csp201609_2_火车购票(java)

在这里插入图片描述

思路:
建一个数组a,全部赋值为5,每插入一个座位,则-1。
遍历,判断该排是否可以连续插入。
如果都没有连续的座位,则从前面遍历插入

import java.util.Arrays;
import java.util.Scanner;

public class Main {
    
    
    public static void main(String[] args) {
    
    
        Scanner input = new Scanner(System.in);
        int[] a = new int[21];
        Arrays.fill(a, 5);
        int n = input.nextInt();
        int[] k = new int[n];
        boolean flag = false;
        for (int i = 0; i < n; i++) {
    
    
            k[i] = input.nextInt();
        }
        for (int i = 0; i < n; i++) {
    
    
            flag = false;
            for (int j = 1; j < 21; j++) {
    
    
                if (a[j] == 0) {
    
    
                    continue;
                }
                if (a[j] >= k[i]) {
    
    
                    for (int x = 1; x <= k[i]; x++) {
    
    
                        System.out.printf("%d ", (j - 1) * 5 + (5 - a[j]) + x);
                    }
                    a[j] -= k[i];
                    flag = true;
                    break;
                }
            }
            if (!flag) {
    
    
                for (int j = 1; j < 21; j++) {
    
    
                    if (a[j] == 0) {
    
    
                        continue;
                    }
                    if (k[i] == 0) {
    
    
                        break;
                    }
                    System.out.printf("%d ", (j - 1) * 5 + (5 - a[j])+1);
                    a[j]--;
                    k[i]--;
                    j--;
                }
            }
            System.out.println();
        }
    }

}

猜你喜欢

转载自blog.csdn.net/weixin_46157208/article/details/108013871