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;}