#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
int nums[101]={};
int maxnum=0;//记录学校的最大队伍数 确定最大循环给几只队伍
for(int i=1;i<=n;i++){
cin>>nums[i];
maxnum=max(maxnum,nums[i]);
}
int id=0;
int pre=0;//上一个学校编号
int flag[101][11][11]={};
//每一轮给每个学校的一只队伍赋值
for(int j=1;j<=maxnum;j++){//循环轮数
for(int k=1;k<=10;k++){//每队10人
for(int i=1;i<=n;i++){//循环每个学校 现在学校的编号
{
if(j<=nums[i]){
if(pre==i){//相同学校隔开做
id+=2;
}
else{//不同学校直接做
id++;
}
pre=i;//记录上一个学校(相对于下一个学校来说)
flag[i][j][k]=id;
}
}
}
}
}
for(int i=1;i<=n;i++){//学校
printf("#%d\n",i);
for(int j=1;j<=nums[i];j++){//队伍
for(int k=1;k<=10;k++){//每队人数
if(k!=10){
printf("%d ",flag[i][j][k]);
}
else{
printf("%d\n",flag[i][j][k]);
}
}
}
}
return 0;
}
思路:
1.三层循环 最大队伍数 每队10人 学校
2.编号顺序 第三层一轮循环给每个学校的某一队伍编一个号
第二层循环 每个队伍10人 一轮循环把每个学校这以队伍的号编好
第一层循环 循环最大队伍数 保证每个学校都编好3.三维数组 学校/队伍/人的座位号