201609-2 火车购票
程序员文章站
2022-04-25 20:08:45
...
#include <stdio.h>
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
int exist[20]={0};
int n;
cin>>n;
int *a=new int[n] ;
for (int i = 0; i < n; i++){
cin>>a[i];
int flag=0;
for (int j = 0; j<20;j++)
{
if(a[i]<=5-exist[j]){
for(int k=exist[j]+1;k<exist[j]+a[i];k++){
cout<<5*j+k<<" ";
}
cout<<5*j+exist[j]+a[i]<<endl;
exist[j]+=a[i];
flag=1;
break;
}
}
if(!flag){
for(int j=0;j<20;j++){
for(int k=exist[j]+1;k<=5;k++){
a[i]--;
if(a[i])
cout<<j*5+k<<" ";
else
cout<<j*5+k<<endl;
}
}
}
}
return 0;
}
满分代码终于调试出来了
思路:循环20行搜索,能在一行中放下就进行排列并输出;
如果flag始终为0,则不能在一行并列刚下,循环20行搜索空位进行放下;
错误分析:刚开始 一直考虑并列放,和输出显示的问题,并列放不下的问题,导致报错很多次;
循环输出,及时反应;
使用const的问题。
需要仔细,谨慎。
上一篇: float和position
下一篇: 自定义分布式锁实现接口幂等性