タイトル、編集するためのコードからコードの解析
コアコード
// 入力 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(0、0 ); }