import java.util.*;
//假如只剩一个学校的学员没有排(假设已经排到了第80个),
// 下一个要排这个学校了,假如说上一个排的学校还是它,那就要从82开始排,
// 但是如果上一个不是这个学校,就要从81开始排,往后排间距都是2;
public class ArrangeSeat {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int group_num = scanner.nextInt();
scanner.nextLine();
String info = scanner.nextLine();
String[] arr = info.split(" ");
List<int[]> lst = new ArrayList<>();
int[] arr_idx = new int[arr.length];
int sum = 0;
for(int i = 0; i < arr.length; i++){
int tmp = Integer.parseInt(arr[i]);
int[] arr_num = new int[tmp*10];
sum+=tmp*10;
lst.add(arr_num);
}
int count = 1;
int step = 1;
List<Integer> recordLastLst = new ArrayList<>();
while (sum>0){
Map<Integer,Integer> map = new HashMap<>();
for(int j = 0; j < lst.size(); j++){
int[] arrtmp = lst.get(j);
if(arr_idx[j] != arrtmp.length){
arrtmp[arr_idx[j]++] = count++;
recordLastLst.add(j);
map.put(j,0);
}
}
if(map.size() == 1){
int size = recordLastLst.size();
boolean last_school_change = true;
if(size > 1){
last_school_change = recordLastLst.get(size - 1) - recordLastLst.get(size - 2) != 0;
}
for(int key: map.keySet()){
if(!last_school_change){
int[] arrtmp = lst.get(key);
arrtmp[arr_idx[key]-1] += step++;
}
}
}
sum--;
}
for(int i = 0; i < lst.size(); i++){
System.out.println("#"+(i+1));
int[] tmparr = lst.get(i);
for(int t = 0; t < tmparr.length; t++){
if(t%10==0){
System.out.print(tmparr[t]);
}
else{
System.out.print(" "+tmparr[t]);
}
if((t+1)%10==0){
System.out.println();
}
}
}
}
}
L1-049 天梯赛座位分配java题解
最新推荐文章于 2024-07-08 14:58:49 发布