L1-049 天梯赛座位分配 (20分)
这题改变了我对循环使用的腐朽看法,增加了标记的使用,模拟法
关键点是题干:“如果最后只剩下 1 所学校的队伍还没有分配座位,则需要安排他们的队员隔位就坐。”
#include<bits/stdc++.h>
int main(void)
{
int n,num[111],maxi=0,max=0;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&num[i]);
if(num[i]>max) max = num[i];
}
int a[111][11][11];
int i,j,k;
int prei=-1,step=0;
for(j=0;j<max;j++){
for(k=0;k<10;k++){
for(i=0;i<n;i++){
if(j<num[i]){
if(prei==i){
step+=2;
}
else step++;
a[i][j][k]=step;
prei=i;
}
}
}
}
for(i=0;i<n;i++){
printf("#%d\n",i+1);
for(j=0;j<num[i];j++){
for(k=0;k<10;k++)
{
if(k!=9)
printf("%d ",a[i][j][k]);
else
printf("%d",a[i][j][k]);
}printf("\n");
}
}
return 0;
}