CCF201609-2火车购票

这个题目...没法说,一开始没想明白就开始写,直接写崩了,想明白了在写吧,就一个标准,同一行的编号小的座位没有坐人那这一行后面的座位一定也没坐人,一个一维数组就可以了,上代码吧,有时间再重写一下:

#include
using namespace std;
int f[105][7]= {0};
int n,p;
void ycl()
{
    for(int i=1; i<=100; i++)
        for(int j=1; j<=5; j++)
        {
            f[i][j]=1;
        }
    scanf("%d",&n);
}
void v1()
{
    for(int j=1; j<=100; j++)
    {
        if(f[j][1]==1)
        {
            printf("%d\n",j);
            for(int k=1; k<=5; k++)
            {
                f[j][k]=0;
            }
            break;
        }
    }
}
void v2()
{
    for(int i=1; i<=20; i++)
    {
        for(int j=1; j<=4; j++)
        {
            int cc=(i-1)*5+j;
            if(f[cc][1]==1)
            {
                f[cc][1]=0;
                f[cc+1][1]=0;
                printf("%d %d\n",cc,cc+1);
                return;
            }
        }
    }
    int sum=2;
    for(int i=1; i<=100; i++)
    {
        if(f[i][1]==1)
        {
            if(sum==2)
                printf("%d",i);
            else if(sum==1)
            {
                printf(" %d\n",i);
                return;
            }
            sum--;
        }
    }

}
void v3()
{
    for(int i=1; i<=20; i++)
    {
        for(int j=1; j<=3; j++)
        {
            int cc=(i-1)*5+j;
            if(f[cc][1]==1)
            {
                f[cc][1]=0;
                f[cc+1][1]=0;
                f[cc+2][1]=0;
                printf("%d %d %d\n",cc,cc+1,cc+2);
                return;
            }
        }
    }
    int sum=3;
    for(int i=1; i<=100; i++)
    {
        if(f[i][1]==1)
        {
            if(sum==3)
                printf("%d",i);
            else if(sum==2)
                printf(" %d",i);
            else if(sum==1)
            {
                printf(" %d\n",i);
                return;
            }
            sum--;
        }
    }
}
void v4()
{
    for(int i=1; i<=20; i++)
    {
        for(int j=1; j<=2; j++)
        {
            int cc=(i-1)*5+j;
            if(f[cc][1]==1)
            {
                f[cc][1]=0;
                f[cc+1][1]=0;
                f[cc+2][1]=0;
                f[cc+3][1]=0;
                printf("%d %d %d %d\n",cc,cc+1,cc+2,cc+3);
                return;
            }
        }
    }
    int sum=4;
    for(int i=1; i<=100; i++)
    {
        if(f[i][1]==1)
        {
            if(sum==4)
                printf("%d",i);
            else if(sum==2||sum==3)
                printf(" %d",i);
            else if(sum==1)
            {
                printf(" %d\n",i);
                return;
            }
            sum--;
        }
    }

}
void v5()
{
    for(int i=1; i<=20; i++)
    {
        int cc=(i-1)*5+1;
        if(f[cc][1]==1)
        {
            f[cc][1]=0;
            f[cc+1][1]=0;
            f[cc+2][1]=0;
            f[cc+3][1]=0;
            f[cc+4][1]=0;
            printf("%d %d %d %d %d\n",cc,cc+1,cc+2,cc+3,cc+4);
            return;
        }
    }
    int sum=5;
    for(int i=1; i<=100; i++)
    {
        if(f[i][1]==1)
        {
            if(sum==5)
                printf("%d",i);
            else if(sum==4||sum==3||sum==2)
                printf(" %d",i);
            else if(sum==1)
            {
                printf(" %d\n",i);
                return;
            }
            sum--;
        }
    }
}
int main()
{
    ycl();
    for(int i=0; i


你可能感兴趣的:(CCF真题)