一、90分代码
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
int p,i,j,k,sum;
int a[100];
for(i=0;i<=100;i++)
{
a[i]=0;
}
for(i=0;i<n;i++)
{
cin>>p;
for(j=1;j<=100;j++)
{
if(p==sum)
{
k=j-p;
int d;
for(d=k;d<j;d++)
{
if(a[d]==0)
{
a[d]=1;
cout<<d<<" ";
}
}
cout<<endl;
sum = 0;
break;
}
if((j-1)%5==0)
{
sum=0;
}
if(a[j]==0)
{
sum++;
}
}
}
}
二、原因分析
- 没考虑,“没有连坐的位置,要选最小的几个空位”的情况
- 且数组只开了a[100],溢出了呀… …
三、满分代码
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
int p,i,j,k,sum;
int a[101];
for(i=0;i<=100;i++)
{
a[i]=0;
}
for(i=0;i<n;i++)
{
cin>>p;
sum = 0;
for(j=1;j<=100;j++)
{
if(j%5==1)
{
sum=0;
}
if(a[j]==0)
{
sum++;
}
if(p==sum)
{
k=j-p+1;
int d;
for(d=k;d<=j;d++)
{
if(a[d]==0)
{
a[d]=1;
cout<<d<<" ";
}
}
cout<<endl;
break;
}
else if(j==100)
{
sum=0;
for(k=1;k<=100;k++)
{
if(a[k]==0&&sum<p)
{
a[k]=1;
cout<<k<<" ";
sum ++;
}
if(sum>=p)
{
cout<<endl;
break;
}
}
}
}
}
}
|