CCF CSPブラシ質問レコード15-201609-2列車のチケット購入(Java)

201609-2
質問名: 列車チケット
制限時間: 1.0秒
メモリ制限: 256.0MB
問題の説明:

問題の説明

  車両の座席割り当てを処理するために、鉄道発券システムの簡単な座席割り当てアルゴリズムを実装してください。
  車に20の列があり、各列に5席あるとします。便宜上、1〜100を使用してすべての座席に番号を付けます。最初の行は1〜5、2番目の行は6〜10、というように、20番目の行は96〜100です。
  チケットを購入する場合、1人が1枚以上のチケットを購入でき、最大5枚までです。これらのチケットを同じ列の隣接する座席に配置できる場合は、最も小さい番号の隣接する座席に配置する必要があります。それ以外の場合は、(隣接しているかどうかに関係なく)数が最も少ないいくつかの空の席に配置する必要があります。
  当初はすべてのチケットを購入していなかったと仮定して、チケットの購入手順が記載されていますので、この手順に従ってください。

入力フォーマット

  入力の最初の行には、チケット購入指示の数を表す整数nが含まれています。
  2番目の行にはn個の整数が含まれ、各整数pは 1から5の間で、2つの隣接する数値の間のスペースで区切られた、購入する票の数を示します。

出力フォーマット

n行を  出力します。各行は、命令の処理結果に対応しています。
  チケット購入指示pはp枚のチケットを小から大にソートして出力します。

入力例

4
2 5 4 2

出力例

1 2
6 7 8 9 10
11 12 13 14
3 4

サンプル概要

  1)2枚のチケットを購入して1席と2席を獲得します。
  2)5枚のチケットを購入して6〜10席を獲得します。
  3)4枚のチケットを購入して11〜14席を獲得します。
  4)2枚のチケットを購入して、3席と4席を獲得します。

評価のユースケースの規模と規則

  すべての評価のユースケースの場合、1≤  N  ≤100、および購入したすべてのチケットの合計が100を超えてはなりません。

import java.util.Scanner;
public class 火车购票 {

	public static void main(String[] args) {
		Scanner sc =new Scanner(System.in);
		int n=sc.nextInt();
		int[] a=new int[n+1];
		for(int i=1;i<=n;i++){
			a[i]=sc.nextInt();
		}
		int[][] pos=new int[20][5];
		
		for(int i=1;i<=n;i++){
			int mark=-1;
			int count=0;
			for(int x=0;x<20;x++){		
				for(int y=0;y<5;y++){
					
						if(pos[x][y]==0&&a[i]<=5){
							count++;
							if(count==a[i]){
								mark=y+1-a[i];
								for(int r=0;r<a[i];r++){
									pos[x][mark+r]=1;
									System.out.print(5*x+mark+1+r+" ");
								}
								System.out.println();
								break;
								
							}
							
						}
						
					}
				count=0;
				if(mark!=-1){
					
					break;
				}else{
					count=0;
					continue;
				}
			}
			if(mark==-1){
				 count=0;
				for(int k=0;k<20;k++){
					for(int j=0;j<5;j++){
						
						if(pos[k][j]==0){
								count++;
								pos[k][j]=1;
								System.out.print(k*5+(j+1)+" ");
							if(count==a[i]){
							System.out.println();
							break;
							}
						}
					}
					if(count==a[i]){
						break;
					}else{
						continue;
					}
				}
			}
			
		}
		
		
		
		
		

	}

}

 

おすすめ

転載: blog.csdn.net/m0_37483148/article/details/108324067