zoukankan      html  css  js  c++  java
  • HDU

    给你最多8个长度不超过5的DNA系列,求一个包含所有系列的最短系列。

    迭代加深的经典题。(虽然自己第一次写)

    定一个长度搜下去,搜不出答案就加深大搜的限制,然后中间加一些玄学的减枝

    //Twenty
    #include<cstdio>
    #include<cstdlib>
    #include<iostream>
    #include<algorithm>
    #include<cmath>
    #include<cstring>
    #include<queue>
    #include<vector>
    using namespace std;
    int ans,T,n,sz[10],maxn,lim;
    char s[10][10],b[5]={'A','T','C','G'};
    void dfs(int cnt,int len[]) {
        if(cnt>lim) return;
        int maxx=0;
        for(int i=1;i<=n;i++) 
            maxx=max(maxx,sz[i]-len[i]);
        if(maxx==0) {
            ans=cnt;
            return;
        }
        if(cnt+maxx>lim) return;
        for(int i=0;i<4;i++) {
            int tep[10];
            int flag=0;
            for(int j=1;j<=n;j++) {
                if(s[j][len[j]]==b[i]) {
                    tep[j]=len[j]+1;
                    flag=1;
                }
                else tep[j]=len[j];
            }
            if(flag) dfs(cnt+1,tep);
            if(ans!=-1) break;
        }
    }
    int main()
    {
        scanf("%d",&T);
        while(T--) {
            scanf("%d",&n);
            maxn=0;
            for(int i=1;i<=n;i++) {
                scanf("%s",s[i]);
                sz[i]=strlen(s[i]);
                maxn=max(maxn,sz[i]);
            }
            for(;;) {
                ans=-1;
                lim=maxn;
                int p[10]={0};
                dfs(0,p);
                if(ans!=-1) break;
                maxn++;
            }
            printf("%d
    ",ans);
        }
        return 0;
    }
    View Code
  • 相关阅读:
    C++常用库函数
    ejabberd组成模块
    TCP/IP协议栈的基本工作原理
    erlang ets表
    erlang lists模块函数使用大全
    erlang-string
    erlang四大behaviour之四-supervisor
    erlang四大behaviour之三-gen_event
    erlang四大behaviour之二-gen_fsm
    erlang四大behaviour之一gen_server
  • 原文地址:https://www.cnblogs.com/Achenchen/p/7506958.html
Copyright © 2011-2022 走看看