UVA10152-龟壳排序

来源:互联网 发布:东莞制造业 数据 编辑:程序博客网 时间:2024/05/01 06:18
#include <iostream>#include <string>#include <stack>#include <fstream>#include <cstring>using namespace std;string a[230], b[230];int main (){    //freopen("data.in","r",stdin);    //freopen("data.out","w",stdout);    int k, n;    cin>>k;    while(k--)    {        stack<string> s;        cin>>n;cin.get();        for(int i = 0; i < n; i++)            getline(cin,a[i]);        for(int i = 0; i < n; i++)            getline(cin,b[i]);//        for(int i = 0, j = 0,flag = 0; i < n&&j < n; i++,j++)//        {//            while(!a[i].size())if(i<n-1)i++;//            while(!b[j].size())if(j<n-1)j++;//            if(a[i] != b[j]&&a[i].size())//            {//                flag ++;//                if(flag == 1)//                {//                    for(int k = 0; k < i; k++)   错误思路害死人啊  原:1 2 3 4 5 6 7 8 9//                        s.push(b[k]);                              目:2 4 1 6 3 5 7 8 9//                }                                                  wrong:6 4 2//                s.push(b[j]);                                      right:6 1 4 2  //                for(int k = 0; k < n; k++)       思路一旦错。自己找实验样例都不容易啊!!!//                if(a[k] == b[j])a[k] = "";////                b[j] = "";//                i = -1;j = -1;//            }//        }        while(!s.empty())            {                cout<<s.top()<<endl;                s.pop();            }        cout<<endl;    }    return 0;}修改后:#include <cstdio>#include <cstring>using namespace std;int main (){    char a[230][85], b[85];    int k, n,num[230];;    scanf("%d",&k);    while(k--)    {        scanf("%d",&n);        getchar();        for(int i = 0; i < n; i++)gets(a[i]);        for(int i = 0; i < n; i++)        {            gets(b);            for(int j = 0; j < n; j++)            {                if(!strcmp(a[j],b))                {                    num[i] = j;                    break;                }            }        }        int i;        for(i = n-1; i >= 1; i--)            if(num[i]<num[i-1])break;        for(int j = i-1; j >= 0; j--)            puts(a[num[j]]);        printf("\n");    }    return 0;}

原创粉丝点击