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;

}




posted @ 2014-03-30 20:00  dengyaolong  阅读(237)  评论(0编辑  收藏  举报