栈uva10152

来源:互联网 发布:java怎么做界面 编辑:程序博客网 时间:2024/05/22 07:52

首先找到需要移动的字符串,方法如下:以初始序列为准,设初始序列下标为i, 目的序列下标为j, 从n-1开始,如果两下标对应的字符串相等,下标同时减一,否则仅初始序列下标减一。那么目的序列中还未被成功匹配的字符串就是需要移动的字符串。要使移动次数最少,显然应该按未被处理的目的序列中字符串逆序移动(输出)。

#include<iostream>#include<cstring>#include<cstdlib>#include<cstdio>#include<cmath>using namespace std;int main(){    char a[200+5][80+5],b[200+5][80+5];    int num,tur;    cin>>num;    while(num--)    {        cin>>tur;        cin.get();        for(int i=0;i<tur;i++)            cin.getline(a[i],80+3);        for(int i=0;i<tur;i++)            cin.getline(b[i],80+3);        int flag_1=tur-1,flag_2=tur-1;        for(;flag_1>=0;flag_1--)            if(!strcmp(a[flag_1],b[flag_2]))                flag_2--;        for(int i=flag_2;i>=0;i--)            cout<<b[i]<<endl;        cout<<endl;    }    return 0;}


0 0
原创粉丝点击