PC10303/UVA10252
一开始看错题啦,以为是最长公共字序列的变题,认真一看,原来是排列后的最长公共序列,本来想着排序后,从小到大共同就输出的,但是认真一想,根本没必要,我有bitmap啊!之后哗啦啦地码完了,发现一个神奇的事情,就是WA了,毫不怀疑自己,看了一下别人写的代码,思路基本一样,关键就是都去字符串的时候……UVA/PC很多时候都要getline(cin,str)整行读起……改了一下,马上SOLVED了。。。!!!
/*******************************************************************************/ /* OS : 3.2.0-58-generic #88-Ubuntu SMP Tue Dec 3 UTC 2013 GNU/Linux * Compiler : g++ (GCC) 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) * Encoding : UTF8 * Date : 2014-03-30 * All Rights Reserved by yaolong. *****************************************************************************/ /* Description: *************************************************************** *****************************************************************************/ /* Analysis: ****************************************************************** *****************************************************************************/ /*****************************************************************************/ #include<iostream> #include<cstdio> #include<cstring> #include<string> #include<cmath> using namespace std; #define N 27 int A[N],B[N]; int main(){ int lenA,lenB; string strA,strB; int i; while(getline(cin,strA)&&getline(cin,strB)){ lenA=strA.length(); lenB=strB.length(); memset(A,0,sizeof(A)); memset(B,0,sizeof(B)); for(i=0;i<lenA;i++){ A[strA[i]-'a']++; } for(i=0;i<lenB;i++){ B[strB[i]-'a']++; } for(i=0;i<26;i++){ int tmp=min(A[i],B[i]); while(tmp--){ cout<<char(i+'a'); } } cout<<endl; } return 0; }