• poj 3302 Subsequence


    题目链接:http://poj.org/problem?id=3302

            题意:  给定两个字符串,求第二个字符串是否为第一个字符串正向或反向的子串。

            直接按s2中的字符在s1中搜索,有两个地方要剪枝,一是当s2的长度大于s1时,还有当s1剩余字符无s2的当前字符时。

    #include<cstdio>
    #include
    <fstream>
    #include
    <iostream>
    #include
    <cstring>
    using namespace std ;
    int n, i, j ;
    char s1[101], s2[101] ;
    bool is_sub(){
        
    int s1_len = strlen(s1) ;
        
    int s2_len = strlen(s2) ;
        
    int sn=0, t=0 ;
        
    int find=0 ;
        
    if(s2_len>s1_len)   return false ;  //剪枝
        
    for(i=0; i<s2_len; i++){            //正向
            find=0 ;
            
    for(j=t; j<s1_len; j++){
                
    if(s1[j]==s2[i]){
                    sn 
    ++ ;
                    t 
    = j+1 ;
                    find 
    = 1 ;
                    
    break ;
                }
            }
            
    if(sn==s2_len)  return true ;
            
    else if(find==0)    break ;     //剪枝
        }
        sn
    =0 ;
        t
    =0 ;
        
    for(i=s2_len-1; i>=0; i--){         //反向
            find=0 ;
            
    for(j=t; j<s1_len; j++){
                
    if(s1[j]==s2[i]){
                    sn 
    ++ ;
                    t 
    = j+1 ;
                    find 
    = 1 ;
                    
    break ;
                }
            }
            
    if(sn==s2_len)  return true ;
            
    else if(find==0)    break ;
        }
        
    return false ;
    }
    int main(){
        fstream cin(
    "input.in") ;
        cin 
    >> n ;
        
    while(n--){
            cin 
    >> s1 >> s2 ;
            
    if(is_sub())
                cout 
    << "YES" << endl ;
            
    else
                cout 
    << "NO" << endl ;
        }
        
    return 0 ;
    }
  • 相关阅读:
    浙江大华2012笔试题+答案解析
    腾讯2011年10月15日校招笔试+答案解析
    百度2011招聘笔试题+答案解析
    阿里巴巴2011笔试题+答案解析
    微软2012实习生笔试题+答案解析
    腾讯2012实习生笔试题+答案解析
    迅雷2012春招+答案解析
    华为2012春上机笔试题+参考程序
    中兴2011笔试题+答案解析
    mysql修改数据库名
  • 原文地址:https://www.cnblogs.com/xiaolongchase/p/2173831.html
Copyright © 2020-2023  润新知