#include#include#include#include#" />

亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

poj 1699 Best Sequence

系統(tǒng) 2332 0

http://poj.org/problem?id=1699

題目大意:

給你n個(gè)字符串 可以讓他們?nèi)我馐孜埠喜⑾噙B

求包含所以字符串的最短總字符串長度

注意:

只能首尾合并相連??像 ACTG 和 CT 是不可以的

思路:

求出所以成對字符串合并會(huì)增加多少長度 并記錄在表中

然后Dfs搜索就可以啦 剪枝效果更好

代碼及其注釋:

      #include<iostream>

#include<cstdio>

#include<cstring>

#include<string>

#include<cmath>

#include<queue>

#include<algorithm>

#include<set>



using namespace std;



const int N=11;

char s[N][N*2];

int l[N];

int addl[N][N];

bool had[N];

int ans, n;

void Findaddl(int I,int J)

{

    int w,i,j;

    for(w=max(0,l[I]-l[J]);w<l[I];++w)

    {



       for(i=w,j=0;j<l[J]&&i<l[I];++j,++i)

       {

           if(s[I][i]!=s[J][j])

           break;

       }

       if(j==l[J]||i==l[I])

       break;

    }

    if(j==l[J])

    addl[I][J]=0;

    else

    addl[I][J]=w+l[J]-l[I];

}

void Dfs(int sum,int Len,int pre)

{

    for(int i=0;i<n;++i)

    {

        if(!had[i])

        {

            had[i]=true;

            if(sum==n)

            {

                ans=min(ans,Len+addl[pre][i]);//枚舉最小 答案

            }

            else if(Len+addl[pre][i]<ans)//剪枝

            {

                Dfs(sum+1,Len+addl[pre][i],i);

            }

            had[i]=false;

        }

    }

}

int main()

{



   int T;

   scanf("%d",&T);

   while(T--)

   {

       scanf("%d",&n);

       getchar();

       ans=0;

       for(int i=0;i<n;++i)

       {

           gets(s[i]);

           l[i]=strlen(s[i]);//求長度

           ans+=l[i];//記錄長度和 這個(gè)和是最大長度可能

       }

       for(int i=0;i<n;++i)

       {

           for(int j=0;j<n;++j)

           {

               if(i!=j)

               Findaddl(i,j);//求i 和 j 首尾合并增加多少長度

           }

       }

       memset(had,false,sizeof(had));

       for(int i=0;i<n;++i)

       {

           had[i]=true;

           Dfs(2,l[i],i);//深搜

           had[i]=false;

       }

       printf("%d\n",ans);

   }

   return 0;

}


    

?

poj 1699 Best Sequence


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會(huì)非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 四虎在线网站 | 欧美级毛片 | 色婷婷色综合缴情在线 | 成人久久18免费网站 | 看免费黄色一级视频 | 色婷五月 | 久久99久久99精品免观看麻豆 | 久久久91精品国产一区二区 | 久久综合九色综合欧美狠狠 | 中文日韩欧美 | 午夜体验区 | 亚洲国产一区二区三区四区五区 | 欧美精品九九99久久在观看 | 亚洲美女黄视频 | 亚洲毛片免费在线观看 | 欧美人拘一级毛片 | 国产精品久久大陆 | 亚洲一区二区日韩欧美gif | 久久精品久久精品久久 | 97精品国产自在现线免费 | 欧美天天性影院 | 久久国产精品自由自在 | 玖玖中文字幕 | 视频在线亚洲 | 日韩专区亚洲精品欧美专区 | 青青久久国产成人免费网站 | 激情都市久久爱 | 性生生活三级视频观看 | 特黄十八岁大片 | 四虎在线播放免费永久视频 | 中文有码第一页 | 中文字幕亚洲精品久久 | 国产21区 | 亚洲国产成人在线视频 | 久久国产精品999 | 亚洲欧美中日韩中文字幕 | 日本韩国欧美一区 | 成年人一级黄色片 | 日韩中文字幕不卡 | 四虎综合网 | 久久香蕉综合精品国产 |