点这里去看题

 

模拟,注意细节

 

#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;
}

 

posted on 2017-03-11 22:16  benTuTuT  阅读(125)  评论(0编辑  收藏  举报