编程任务编号 H: 剪辑电影片段

编程任务编号 H: 剪辑电影片段

任务描述

给定一部电影,我们需要从中剪辑一小片段,并且需要将此片段有可能顺序播放,也可能倒序播放。
我们将此问题简化如下。给定一个数组,从中读取指定起止范围内的元素,顺序或者反序输出。

输入

第一个有一个整数n(0<n<=100)表示数组中元素的个数。
其后一行中有n个数据,分别表示数组中的n个元素,每个值的取值范围为[0,10000]。
此后有一行,包含一个整数k(0<k<=100),表示测试用例的个数。
其后k行,每行2个数据,每个数据的取值范围为[1,n],这两个数据分别表示剪辑的起点和终点位置。

输出

对于每次测试用例,输出一行。
输出起点和终点位置之间的元素,包括起点和终点在内。如果起点位置小于终点位置,则顺序输出,否则,反序输出。
一行中的多个输出数据用空格分隔。注意,每行的行尾没有空格,只有换行。

输入举例

10
2 8 4 6 9 3 0 5 2 7
5
9 9
1 10
10 1
3 9
4 2

输出举例

2
2 8 4 6 9 3 0 5 2 7
7 2 5 0 3 9 6 4 8 2
4 6 9 3 0 5 2
6 4 8
#include <stdio.h>
#include <string.h>

int a[100];
void clips(int start , int end){
    int i,j,len,inc;
    if(start < end){
        len = end - start + 1;
        inc = 1;
    }else{
        len = start - end + 1;
        inc = -1;
    }
    for(i=0,j=start;i<len-1;i++,j+=inc){
        printf("%d ",a[j]);
    }
    printf("%d\n",a[j]);
}

int main(){
    int n,i,k,start,end;
    scanf("%d",&n);
    for(i=0;i<n;i++){
        scanf("%d",&a[i]);
    }
    scanf("%d",&k);
    for(i=0;i<k;i++){
        scanf("%d %d",&start,&end);
        clips(start-1,end-1);
    }


}
发布了118 篇原创文章 · 获赞 85 · 访问量 48万+

猜你喜欢

转载自blog.csdn.net/c_lanxiaofang/article/details/103464920
h'h