hdu 2572 终曲

终曲

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1289    Accepted Submission(s): 370


Problem Description
最后的挑战终于到了!
站在yifenfei和MM面前的只剩下邪恶的大魔王lemon一人了!战胜他,yifenfei就能顺利救出MM。
Yifenfei和魔王lemon的挑战很简单:由lemon给出三个字符串,然后要yifenfei说出第一串的某个子串,要求该子串长度最小,并且同时包含第2个串和第3个串。
特别地,如果有多个这样的子串,则请输出字母序最小的一个。
 

Input
输入数据首先是一个整数C,表示测试数据有C组;
接着是C组数据,每组包含三行字符串,第一个字符串长度大于1小于100
后面两个串的长度大于1且小于10
 

Output
请对应每组输入数据输出满足条件的最短子串;
如果没有,请输出 No
 

Sample Input
  
  
    
    
    
    
2 abcd ab bc abc ab bd
 

Sample Output
  
  
    
    
    
    
abc No
/*题解: 先求出下面两个字符串在第一个字符串中的下标位置,如果字符串没有包含下面的字符串(即未记录下标位置)则输出No, 根据开始下标和结束下标求出包含两个字符串的子串。  然后排序,求出最短子串。若长度相同则排字母序。  */
#include
#include
#include
using namespace std;
char s1[1010],s2[1010],s3[1010];
struct ST
{
    int st;
    int end;
}e1[1010],e2[1010];
struct MS
{
char s[110]; 
}e[1010];
int cmp(MS a,MS b)
{
	int x=strlen(a.s),y=strlen(b.s);
	if(x==y)
       return strcmp(a.s,b.s)<0;
       else return x

 
/*题解:
    见识到C++函数的强大功能,不愧是在C的改进上的一门语言
    */
#include
#include
using namespace std;
int main()
{
    int T,i,j,n;
    cin>>T;
    while(T--)
    {
        string s,s1,s2,s3,str;    //str起临时存储的作用 
        cin>>s1>>s2>>s3;
        n=s1.length();
        str=s1+"#";            
        for(i=0; i


 

你可能感兴趣的:(水水,杭电,hdu,c)