hdu2572

2014-11-23 19:56:04 · 作者: · 浏览: 6

终曲
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1095 Accepted Submission(s): 315


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


这道题我WA了无数次。。尼玛原来是把输出No看成了NO

#include   
#include   
#include   
#include   
#include   
#include   
#include   
#include   
#include   
#define INF 99999999   
using namespace std;  
  
const int MAX=100+10;  
char a[MAX],b[15],c[15];  
int s,t,len;  
  
bool Strcmp(int i,int j,int x,int y){  
    while(i<=j){  
        if(a[x]a[i])return false;  
        ++i,++x;  
    }  
    return false;  
}  
  
void PP(int B,int lenb,int C,int lenc){  
    if(B=C && B+lenb<=C+lenc){  
        if(lenc>T;  
    while(T--){  
        cin>>a>>b>>c;  
        int lena=strlen(a),lenb=strlen(b),lenc=strlen(c);  
        int B=-1,C=-1,flagb=0,flagc=0;//B,C分别代表上一次a串中出现b,c的起始位置    
        s=-1,t=-1,len=INF;//s,t表示最短包含字串b,c的起始位置和终止位置    
        for(int i=0;i
#include
#include
#include
#include
#include
#include
#include
#include
#define INF 99999999
using namespace std;

const int MAX=100+10;
char a[MAX],b[15],c[15];
int s,t,len;

bool Strcmp(int i,int j,int x,int y){
    while(i<=j){
        if(a[x]a[i])return false;
        ++i,++x;
    }
    return false;
}

void PP(int B,int lenb,int C,int lenc){
	if(B=C && B+lenb<=C+lenc){
		if(lenc>T;
    while(T--){
        cin>>a>>b>>c;
        int lena=strlen(a),lenb=strlen(b),lenc=strlen(c);
		int B=-1,C=-1,flagb=0,flagc=0;//B,C分别代表上一次a串中出现b,c的起始位置 
        s=-1,t=-1,len=INF;//s,t表示最短包含字串b,c的起始位置和终止位置 
        for(int i=0;i