题目大意:         给你n个字符串,然后要求求一个最大的子串(或者子串的反串,子串可以倒过来的意思)在每个字符串中都出现。要求求这个子串的长度。 解题思路:         为了节省时间,先找出这些串中长度最短的,然后枚举这个串中的所有子串。再让这个子串或者反串去匹配每一个串,若都符合,即输出,然后退出。这里枚举,当然是从子串长度大的往小的枚举啦,节省时间。 不过还是写了3重for循环,但是串的长度,还有串的数量都是100以内的。所以复杂度还可以接受。1000000. 代码:
#include
#include
#include
#include
const int MAX=105;
using namespace std;
string str[MAX];
int n;
char* search(int index_min)
{
	int i,j;
	char sub[MAX];//子串为char型
	string resub="";//倒转后的为string类,注意
	//string sub,resub;
	int len=str[index_min].size();
	string min(str[index_min]);
	for(i=len;i>=1;i--)//长度
	{
		for(j=0;j+i<=len;j++)//地址
		{
			min.copy(sub,i,j);
			sub[i]='\0';
			resub=sub;
			reverse(resub.begin(),resub.end());
            int Flag=0;
			for(int h=0;h>cas;
	while(cas--)
	{
		int i;
		cin>>n;
		int min_index=0;
		for(i=0;i>str[i];
			if(str[min_index].size()>str[i].size())
			{
				min_index=i;
			}
		}
		ans=search(min_index);
		//search(min_index);
		//cout<

 
posted on 2011-12-01 13:58  cchun  阅读(287)  评论(0编辑  收藏  举报