HDU1238_搜索入门_暴力枚举

题目大意:         给你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<

 

转载于:https://www.cnblogs.com/cchun/archive/2011/12/01/2520198.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值