ccf竞赛之火车购票 java版

时间:2020-11-28 21:35:01

火车购票代码:

import java.util.*;
public class Main {
public static void main(String[] args) {
new Main().run();
}
public void run() {
Scanner s = new Scanner(System.in);
int n = s.nextInt();
int max=0;
int[] z=new int[n];
for (int i = 0; i <n ; i++) {
z[i]=s.nextInt();
if(i!=0)
{
if(Math.abs(z[i]-z[i-1])>max)
max=Math.abs(z[i]-z[i-1]);
}
}
System.out.println(max);
}
}
2.import java.util.*;
public class Main {
public static void main(String[] args) {
new Main().run();
}
public void run() {
Scanner s = new Scanner(System.in);
int n = s.nextInt();
int[] z=new int[n];
for (int i = 0; i <n ; i++) {
z[i]=s.nextInt();
}//读入参数
int[] aa=new int[20];//aa[k]表示此行已占位数
for (int i = 0; i <20 ; i++) {
aa[i]=0;
}
for(int i=0;i<n;i++)//第i个事件
{
int flag=0;
for (int j = 0; j <20 ; j++) {//是否能安排在编号最小的相邻座位
if((5-aa[j])>=z[i])
{
for (int k = 0; k <z[i] ; k++) {
System.out.print(j*5+aa[j]+k+1+" ");
}
System.out.println();
aa[j]+=z[i];
flag=1;
break;
}
}
if(flag==0) {//不能安排在相邻座位
int l = z[i];
for (int j = 0; j < 20 && l > 0; j++) {
if (aa[j] != 5) {
int zz = (l > 5 - aa[j]) ? 5 - aa[j] : l;//保存此列需要占的位置数
for (int k = 0; k < l && aa[j] + k + 1 < 6; k++) {
aa[j + k + 1] = 1;
System.out.print(j*5+aa[j] + k + 1+" ");
l--;
}
aa[j] += zz;
}
}
System.out.println();
}
}
}
}