TSPの問題

タイトル、編集するためのコードからコードの解析

コアコード

// 入力
INT N-;
 INT D [MAX_N] [MAX_N]; 

int型 [DPの1 << MAX_N] [MAX_N];    // 検索用いDPメモリアレイ

// 頂点の集合は、訪問された現在位置が、SでありますVの
INT REC(INT S、int型V){
     IF([V] DP [S]> = 0を返すDP [S] [V]を、
    
    IF(S ==(1 << N-) - 1。 && == V 0 ){
         // 既に0とバック開始点に全ての頂点を訪問
        リターン DP [S] [V] = 0 ; 
    } 
    
    int型 RES = INF;   // 無限
    INT U = 0 ; U <N; U ++ ){
         場合(!(S >> U&1 )){ 
            RES =分(RES、REC(S | 1つの << U、U)+ D [V] [ U])。
        } 
    } 
    戻り DP [S] [V] =のRES。
} 

ボイドは解決(){ 
    memsetの(DP、 - 1はsizeof (DP))。
    COUT << REC(00 ); 
}

 

おすすめ

転載: www.cnblogs.com/Sansetto/p/11240453.html