>>1 それぞれの街同士の距離をマトリックスにする。 あとは平面巡回セールスマン問題と同じ。 double **matrix; int *visited; int pointnum; double k; int search( int num, double len, int last_path ) { double now_len; int i;
if( num == pointnum ){ now_len = len + matrix[0][last_path]; if( now_len < k ) return TRUE; else return FALSE; } else { for( i = 1; i < pointnum; i++ ){ if( visited[i] == FALSE ){ now_len = len + matrix[i][last_path]; visited[i] = TRUE; if ( search( num + 1, now_len, i ) == TRUE ) return TRUE; visited[i] = FALSE; } } } }