PC/UVa 110303/10252 Common Permutation

来源:互联网 发布:js登录界面源代码 编辑:程序博客网 时间:2024/04/27 20:40
 

给出两个字符串 a和b 输出满足如下条件的最长串 x : x的某两个排序分别是a 和b的(不必连续)的子序列

首先注意 最长的串,不必连续的,我第一反应就是动态规划,再仔细一看,x 的某两个排序 也就是说,x是由a和b所含有的相同的字符组成的,但是x要从小到大输出

有一点我恨不能理解,他明明说输入的每一行是由小写字母组成的字符串,但是这些字符串中居然含有空格,搞得我很郁闷,晕!

 

#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <algorithm>
using namespace std;
#define  maxnum 1005
char str1[maxnum],str2[maxnum];
int l1,l2;
bool cmp(char a,char b)
{
 return a<b;
}
int main()
{
 int i,j;
 while(cin.getline(str1,maxnum),cin.getline(str2,maxnum))
 {
  l1=strlen(str1);
  l2=strlen(str2);
  sort(&str1[0],&str1[0]+l1,cmp);
  sort(&str2[0],&str2[0]+l2,cmp);
  i=0;
  j=0;
  int flag=0;
  while(i<l1&&j<l2)
  {
   if(str1[i]==str2[j])
   {
    cout<<str1[i];
    i++;
    j++;
   }
   else if(str1[i]>str2[j])
    j++;
   else i++;
  }
  printf("\n");
 }
 return 0;
}

 

 

cin.getline(arryName,strlen(arryName));//可以读空格,但是cin没办法读空格

原创粉丝点击