Bailian4097 报站【暴力】

4097:报站
总时间限制: 1000ms 内存限制: 65536kB
描述
北京的地铁是很便利的,几乎覆盖了北京所有的重要地点。如果我们常常坐地铁,也会 非常熟悉地铁上报站的声音。”The next station is ZhongGuanCun. Please get ready for your arrival.”。一个乘客在四号线从上车到下车,会听到一系列的车站名:BeiJingDaXueDongMen, ZhongGuanCun, HaiDianHuangZhuang…

现在需要一个程序,对于一名乘客,报出他在乘坐某号线地铁时,从上车到下车经过的 站名(包括上车的站名和下车的站名)。现在请你写一个程序,来实现这个功能。

输入
第一行 n,表示该地铁线路有 n(n<100)个地铁站。从第 2 行到第 n+1 行是有序的 n 个地铁站的站名,站名由英文字母构成,长度不会超过 100,站名不会重复。第 n+2 行为一 个整数 m(m<100),表示有 m 个乘客需要报站名。这之后 m 行,每行为一个乘客上车的站 名和下车的站名。地铁线路没有环线,但是乘客可以正向坐车,也可以返向坐车。
输出
输出 m 行,每行为每个乘客经过的站名,站名中间用空格分隔。行首或行尾不要有多 余的空格。
样例输入
10
BeiJingDaXueDongMen
ZhongGuanCun
HaiDianHuangZhuang
RenMinDaXue
WeiGongCun
GuoJiaTuShuGuan
DongWuYuan
XiZhiMen
XinJieKou
PingAnLi
2
BeiJingDaXueDongMen RenMinDaXue
GuoJiaTuShuGuan ZhongGuanCun
样例输出
BeiJingDaXueDongMen ZhongGuanCun HaiDianHuangZhuang RenMinDaXue
GuoJiaTuShuGuan WeiGongCun RenMinDaXue HaiDianHuangZhuang ZhongGuanCun

问题链接Bailian4097 报站
问题简述:(略)
问题分析:暴力搜索一下,找出乘车范围,然后输出结果。
程序说明:给出C语言和C++语言两种程序代码。
参考链接:(略)
题记:(略)

AC的C++语言程序如下:

/* Bailian4097 报站 */

#include <bits/stdc++.h>

using namespace std;

const int N = 100;
string name[N];

int main()
{
    
    
    int n, m;
    cin >> n;
    for(int i = 0; i < n; i++)
        cin >> name[i];
    cin >> m;

    string start, taget;
    int begin, end;
    while(m--) {
    
    
        cin >> start >> taget;
        for(begin = 0; begin < n; begin++)
            if(start == name[begin]) break;
        for(end = 0; end < n; end++)
            if(taget == name[end]) break;

        if(begin <= end) {
    
    
            for(int i = begin; i <= end; i++)
                if(i == begin) cout << name[i];
                else cout << " " << name[i];
        } else {
    
    
            for(int i = begin; i >= end; i--)
                if(i == begin) cout << name[i];
                else cout << " " << name[i];
        }
        cout << endl;
    }

    return 0;
}

AC的C语言程序如下:

/* Bailian4097 报站 */

#include <stdio.h>
#include <string.h>

#define N 100

char name[N][N + 1];

int main()
{
    
    
    int n, m, i;
    scanf("%d", &n);
    for(i = 0; i < n; i++)
        scanf("%s", name[i]);
    scanf("%d", &m);

    char start[N + 1], taget[N + 1];
    int begin, end;
    while(m--) {
    
    
        scanf("%s%s", start, taget);
        for(begin = 0; begin < n; begin++)
            if(strcmp(start, name[begin]) == 0) break;
        for(end = 0; end < n; end++)
            if(strcmp(taget, name[end]) == 0) break;

        if(begin <= end) {
    
    
            for(i = begin; i <= end; i++)
                if(i == begin) printf("%s", name[i]);
                else printf(" %s", name[i]);
        } else {
    
    
            for(i = begin; i >= end; i--)
                if(i == begin) printf("%s", name[i]);
                else printf(" %s", name[i]);
        }
        printf("\n");
    }

    return 0;
}

猜你喜欢

转载自blog.csdn.net/tigerisland45/article/details/108538284