题解 | #MP3光标位置#

MP3光标位置

https://www.nowcoder.com/practice/eaf5b886bd6645dd9cfb5406f3753e15

#include<stdio.h>
#include<string.h>
int main(void)
{
    int num=0;
    scanf("%d",&num);
    char str[101]={0};
    scanf("%s",&str);
    //int a[160]={0};
    int b[4]={0};
    /*for(int i=0;i<num;i++)
    {
        a[i]=i+1;
    }*/
    for(int i=0;i<num&&i<4;i++)
    {
        b[i]=i+1;
    }
    //printf("%d\n",b[3]);
    int len=strlen(str);
    int j1=1;//实际光标位置
    int j2=0;//窗口第一个在b数组中位置
    for(int i=0;i<len;i++)
    {
       if(str[i]=='U')
       {
           if(j1==1&&b[0]==1&&num>=4)
           {
               j1=num;
               b[0]=num-3;
               b[1]=num-2;
               b[2]=num-1;
               b[3]=num;
               j2=3;
           }
           else if(j1==1&&b[0]==1&&num<4)
           {
               j1=num;
               j2=num-1;
           }
           else if(j1!=1&&j2==0)
           {
               for(int k=0;k<4;k++){b[k]--;}
               j2=0;
               j1--;
           }
           else if(j1!=1&&j2!=0)
           {
               j1--;
               j2--;
           }
       }
        else if(str[i]=='D')
        {
            if(j1==num&&b[3]==num&&num>=4)
           {
               j1=1;
               b[0]=1;
               b[1]=2;
               b[2]=3;
               b[3]=4;
               j2=0;
           }
           else if(j1==num&&b[3]==0&&num<4)
           {
               j1=1;
               j2=0;
           }
           else if(j1!=num&&j2==3)
           {
               for(int k=0;k<4;k++){b[k]++;}
               j2=3;
               j1++;
           }
           else if(j1!=num&&j2!=3)
           {
               j1++;
               j2++;
           }
        }
    }
    for(int i=0;i<4&&i<num;i++)
    {
        printf("%d ",b[i]);
    }
    printf("\n");
    printf("%d",j1);//第二行输出
    return 0;
}

全部评论

相关推荐

如题如果提出了一个薪资,A不成功,会有可能被取消offer吗
爱打瞌睡的柯基:最想去你们公司 但是别家开的高一些,希望能申请高一点 不管结果如何都谢谢你
点赞 评论 收藏
分享
专心打鱼:互联网搬运工,贴子都要偷
点赞 评论 收藏
分享
沉淀一会:1.同学你面试评价不错,概率很大,请耐心等待; 2.你的排名比较靠前,不要担心,耐心等待; 3.问题不大,正在审批,不要着急签其他公司,等等我们! 4.预计9月中下旬,安心过节; 5.下周会有结果,请耐心等待下; 6.可能国庆节前后,一有结果我马上通知你; 7.预计10月中旬,再坚持一下; 8.正在走流程,就这两天了; 9.同学,结果我也不知道,你如果查到了也告诉我一声; 10.同学你出线不明朗,建议签其他公司保底! 11.同学你找了哪些公司,我也在找工作。
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务