POJ 2744 子串 解题报告

POJ 2744 子串 解题报告

编号:2744

 

考查点:字符串处理,大量的string.h函数使用.

 

思路:先找出最短的字符串,然后利用最短字符串从长到短产生搜索子串,然后进行匹配检测,难点应该是从长到短产生搜索子串时不能有遗漏..

 

提交情况:strrev函数不见了..改成_strrev()了,导致一直compile error,在我自己VS里是可以编译过的撒,后来看到warning后改过来就AC

 

Source Code

 


//POJ Grids 2744
#include <iostream>
#include 
<string.h>
using namespace std;

char ch[100][101];

unsigned 
int sublen(char* pch,unsigned int len,int m)
{
    
char sub[101],rev[101];
    memset(sub,
0,101*sizeof(char));
    memset(rev,
0,101*sizeof(char));
    unsigned 
int sublength = len;
    
while (sublength)
    {
        
for (int i=0;sublength<=len-i;i++)
        {
            strncpy(sub,pch
+i,sublength);
            sub[sublength] 
= '\0';
            strcpy(rev,sub);
            _strrev(rev);
            rev[sublength] 
= '\0';
            
bool flag = true;
            
for (int j=0;j<m;j++)
            {
                
if (!(strstr(ch[j],sub)||strstr(ch[j],rev)))
                {
                    flag 
= false;
                    
break;
                }
            }
            
if (flag)
            {
                
return sublength;
            }
        }
        sublength
--;    
    }
    
return sublength;
}

int main()
{
    memset(ch,
0,100*101*sizeof(char));
    
int n;
    cin
>>n;
    
for (int i=0;i<n;i++)
    {
        
int m;
        cin
>>m;
        unsigned 
int len = 101;
        
int index = 0;
        
char min[101];
        memset(min,
0,101*sizeof(char));
        
for (int j=0;j<m;j++)
        {
            cin
>>ch[j];
            
if (len > strlen(ch[j]))
            {
                strcpy(min,ch[j]);
                len 
= strlen(min);
                index 
= j;
            }
        }
        strcpy(ch[index],ch[m
-1]);
        
int sub = sublen(min,len,m-1);
        cout
<<sub<<endl;
    }

    
return 0;
}

总结:这道题有点复杂,但还不算难吧,搜索字串那点看了书才做出来的,比书上的代码优化了一点,不用在最短字符串自身搜索子串了..

 

 

                                                       By   Ns517

                                                      Time 09.01.22

posted @ 2009-01-22 18:29  端木  阅读(1130)  评论(0编辑  收藏  举报