weixin_43866982
weixin_43866982
采纳率0%
2018-11-30 15:51 阅读 1.2k

2018ACM新生赛(热身赛)

博博的电脑出现了问题,屏幕的某个部分会倒置。博博现在很好奇,如果有 n 个数组成的数列,在博博的电脑看起来是什么样子的呢?
比如说有 n 个数字如1、2、3、4、5,博博的电脑会自动把区间[l ~ r]里面的序列倒置。如果 l 和 r是 2 和 3,那么博博的电脑就会显示1、3、2、4、5。
博博懒得看电脑会把数组变成奇怪的样子,你能直接告诉他大概是什么样子吗?

输入要求
第一行输入一个T(1<=T<=10,000)表示接下来有T组数据
输入的第一行包含三个整数n、 l 和 r (1 ≤ l ≤ r ≤ 1,000, 1 ≤ n ≤ 1,000)
第二行有 n 个数字分别是 a1,a2......an。

输出要求
每次输出占一行,样式为Case #i:+\n+ans+\n(没有加号),ans 为变化后的数组。

测试数据
输入示例
1
5 2 3
1 2 3 4 5
输出示例
Case #1:
1 3 2 4 5

小贴士
博博是嘤嘤怪,数组最后没有空格哦~~~~~~~~~(´。• ᵕ •。`) ♡

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

1条回答 默认 最新

  • qq_42067972 qq_42067972 2018-11-30 16:32

    代码写的不行,凑合试试吧

    #include <stdio.h>
    
    int num[1000];
    int buf[1000];
    int buf_num;
    int T,t=0;
    int n,l,r;
    
    void func()
    {
        int i,ok=0;
        for(i=0;i<n;i++)
        {
            if(ok==0)//普通模式-正序 
            {
                if(num[i]!=l)
                {
                    printf("%d",num[i]);
                    if(i!=n-1)
                    printf(" ");
                }
                else
                {
                    ok=1;
                    buf[buf_num]=num[i];
                    buf_num++;
                }
            }
            else//特殊模式-倒序 
            {
                if(num[i]!=r)
                {
                    buf[buf_num]=num[i];
                    buf_num++;
                }
                else
                {
                    ok=0;
                    buf[buf_num]=num[i];
                    buf_num++;
                    int j;
                    for(j=buf_num-1;j>=0;j--)
                    {
                        printf("%d",buf[j]);
                        if(i!=n-1 || j!=0)
                        printf(" ");
                    }
                }
            }
        }
        return;
    }
    
    int main()
    {   
        scanf("%d",&T);
        while(t<T)
        {
            buf_num=0;
            scanf("%d %d %d",&n,&l,&r);
            int i;
            for(i=0;i<n;i++)
            {
                scanf("%d",&num[i]);
            }
            t++;
            printf("Case #%d:\n",t);
            func();
            printf("\n");
        }
        return 0;
    }
    
    
    点赞 评论 复制链接分享

相关推荐