程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> POJ 1699 Best Sequence (DFS+預處理)

POJ 1699 Best Sequence (DFS+預處理)

編輯:C++入門知識

POJ 1699 Best Sequence (DFS+預處理)


題意:看那張圖就一清二楚了吧, N個序列首位相連(相同的序列部分),得到最短的總序列。

 

思路就是:將N個序列首尾相連能重合的長度求粗來。然後DFS枚舉每種首尾相連的情況。

 

 

#include
#include
#include
#define N 22
#define INF 0x7fffffff
using namespace std;

int n,ans;
int f[N][N],vis[N],len[N];
char str[N][N];
void get(int x,int y)  //f[x][y],將y貼到x後面能減少的最大重復長度
{
    int i,j,l;
    for(l=len[y];l>0;l--)   //枚舉長度
    {
        int ok=1;
        for(i=len[x]-l,j=0;ians)    //剪枝~
        return ;
    for(int i=0;i

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved