首页 > 代码库 > SWPU-ACM集训队周赛之组队赛(3-11) C题题解

SWPU-ACM集训队周赛之组队赛(3-11) C题题解

点这里去看题

 

模拟,注意细节

 

#include<stdio.h>
#include<string.h>
int main()
{
    int T,n,i,j,ct,q[1010];  //q[]储存正负信息
    scanf("%d",&T);
    while(T--)
    {
        char a[1010],b[1010];
        memset(q,0,sizeof(q));
        scanf("%d",&n);
        getchar();    //读掉回车(换行符)
        for(i=0;i<n;i++)
            scanf(" %c",&a[i]);
        ct=-1;
        for(i=0;i<n;i++)    
        {
            if(a[i]==0)
                b[i]=a[i];
            if(a[i]==1)    
            {
                q[i]=ct;
                if(ct==-1)
                    ct=1;
                else if(ct==1)
                    ct=-1;
                b[i]=a[i];
            }
        }
        ct=-1;
        for(i=0;i<n;i++)
        {
            if(b[i]==0 && b[i+1]==0 && b[i+2]==0 && b[i+3]==0)  //连续4个0的情况
            {
                b[i+3]=V;      
                q[i+3]=ct;
                if(ct==-1)
                    ct=1;
                else if(ct==1)
                    ct=-1;
                if(q[i-1]!=q[i+3])    //极性不同则添加调节脉冲B
                {
                    b[i]=B;
                    q[i]=q[i+3];
                }
 
            }
        }
        for(i=0;i<n;i++)
        {
            if(q[i]==-1)
                printf("-");
            if(q[i]==+1)
                printf("+");
            printf("%c",b[i]);
        }
        printf("\n");
    }
    return 0;
}

 

SWPU-ACM集训队周赛之组队赛(3-11) C题题解