zoukankan      html  css  js  c++  java
  • hdu1560 搜索

    从原串的最大长度开始枚举,当某个长度的值能保存所有串时,即成功。对每个长度进行深搜,每次取某个串的第一个。

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<map>
    using namespace std;
    char str[8][6];
    int flag=0,len[10],n;
    int getlen(int *a)
    {
        int i,ans=0;
        for(i=0;i<n;i++)
            ans=max(ans,a[i]);
        return ans;
    }
    void IDA(int *l,int nowlen)
    {
        int i,j;
        if(flag)//找到了,便不用再往下找
            return ;
        if(getlen(l)>nowlen)//剩下的串中最短的串比预计长度要长
            return ;
        if(nowlen==0)//找到,进行标记
        {
            flag=1;
            return ;
        }
        int vi[10];
        memset(vi,0,sizeof(vi));
        for(i=0;i<n;i++)
        {
            if(!vi[i]&&l[i])//没有取出剩下串的首字符
            {
                int temp[10];
                for(j=0;j<n;j++)
                    temp[j]=l[j];
                vi[i]=1;
                char ch=str[i][len[i]-l[i]];
                temp[i]--;
                for(j=i+1;j<n;j++)
                {
                    if(str[j][len[j]-l[j]]==ch&&!vi[j]&&l[j])
                    {
                        vi[j]=1;
                        temp[j]--;
                    }
                }
                IDA(temp,nowlen-1);
            }
        }
        return ;
    }
    int main()
    {
        int i,j,t,low;
        scanf("%d",&t);
        while(t--)
        {
            scanf("%d",&n);
            low=0;
            for(i=0;i<n;i++)
            {
                scanf("%s",&str[i]);
                len[i]=strlen(str[i]);
                low=max(low,len[i]);
            }
            flag=0;
            while(1)
            {
                IDA(len,low);
                if(flag)
                {
                    printf("%d
    ",low);
                    break;
                }
                low++;
            }
        }
        return 0;
    }
  • 相关阅读:
    创建的第二个随笔
    Jq基础简介
    从VG中去除PV unknown device
    redhat using publicyum
    Oracle 11g 安装文件说明
    WP8教程: 第一个WP8应用(一)
    WP8教程: 第一个WP8应用(二)
    sqlplus 的登录方式
    redhat7 安装oracle11g 缺少pdksh包
    jquery实现一个substr截取字符串的小效果
  • 原文地址:https://www.cnblogs.com/wangfang20/p/3177379.html
Copyright © 2011-2022 走看看