UVA10562 数据结构题目

题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1093

题目大意:有很多乌龟套在一起,你每次可以把任意一个乌龟移到栈的顶端,然后给你一个目标序列,问你

至少需要移动哪些乌龟,并按移动顺序输出这些乌龟的名字。

思路分析:想明白了以后就会发现,这道题很水,只需要把两个序列从末尾n-1开始比较,如果发现相同乌龟,

则原序列和目标序列同时向上移1,否则原序列移1,目标序列不动。最后目标序列栈顶剩下的哪些乌龟就是原序列

需要移动的,逆序输出即可。

代码:

#include <iostream>
#include <algorithm>
#include <stack>
#include <queue>
#include <cstdio>
#include <cstring>
using namespace std;
const int maxn=1005;
char a[maxn][100],b[maxn][100];
int main()
{
    int T;
    cin>>T;
    while(T--)
    {
        int n;
        cin>>n;
        getchar();
        for(int i=0;i<=n-1;i++)
            gets(a[i]);
        for(int i=0;i<=n-1;i++)
            gets(b[i]);
       int p=n-1,q=n-1;
       while(p>=0)
       {
           if(!strcmp(a[p],b[q])) q--;
           p--;
       }
       while(q>=0)
       {
           printf("%s\n",b[q]);
           q--;
       }
       cout<<endl;
    }
    return 0;
}

上一篇:对于“2017面向对象程序设计(Java)第三周学习总结”存在问题的反馈


下一篇:我的小前端 (2)—— JQ和zepto