羅区P1019 [NOIP2000】ワードソリティア(DFS)

問題解決の意味をジャンプ

分析:これは、DFSの簡単な質問で、DFSのアイデアが網羅され、私たちはすべての可能なランデブー網羅アウトを置くことを、最長かかり、

難易度は、文字列マッチング、他の文字列コードの後ろに接続された、すなわち文字列です。

#include <cstdioを> 
する#include <iostreamの> 
する#include <CStringの> 
する#include <アルゴリズム> 使用して名前空間STDを、チャー S [ 50 ] [ 50 ]。
int型 N、ANSにおいてlen = 1 int型 VIS [ 50 ]。
インラインボイド DFS(int型K)
{ 
    ANS = MAX(ANS、LEN)。
    int型 iは= 1 ; iが<= N iが++ 
    { 場合(VIS [I] < 2 
        { 

 



        
            int型 J = 0 ; J <strlenを(S [K]); J ++ 
            { 
                もし、(S [i]が[ 0 ] == S [k]は[J])
                { 
                    int型 CNT1 = 0、CNT2 = J。
                    一方(S [I] [CNT1] == S [k]は[CNT2] && CNT2 <STRLEN(S [K]))CNT1 ++、CNT2 ++ もし(CNT2 == STRLEN(S [K]))
                    { 
                        VIS [I] ++ ; 
                        LEN + = STRLEN(S [I]) - CNT1。
                        DFS(I); 
                        VIS [i]は -
                        LEN - =のSTRLEN(S [I]) - CNT1。
                    } 
                } 
            } 
        } 
    } 
} 

int型のmain()
{ 
    scanf関数(" %のD "、&N)
    以下のためにint型 i = 1 ; iが<= N; iは++ 
        CINを >> S [i]は、
    CIN >> S [ 0 ]。
    DFS(0 )。
    printf(" %dの" 、ANS)。
    リターン 0 ; 
}
P1019コード

 

おすすめ

転載: www.cnblogs.com/Hoyoak/p/11367399.html