Alex95 | Дата: Четверг, 14 Янв 16, 11:07 | Сообщение # 1 |
Рядовой
Группа: Пользователи
Сообщений: 9
Репутация: 1
Статус: Offline
| Принимать ладграф, компоненты какого объединены согласно схеме:
Элементы - несложные индексы с 0 вплоть до 6 включая. Хочу указать различные дороге, к примеру: Код:
Код 0, 1 0, 1, 2, 6, 5 0, 1, 2, 6, 5, 4 0, 5, 6, 4 ....
У меня грамотно перебирает только лишь основной курс, однако далее вводятся дороге снесвязанных компонентов. Отчего такое совершается? Способен кто именно несомненно поможет пофиксить? Сейчас двух суток трепышу, никак не могу осознать в чём факторподобного действия.
Код:
Код void goElement( std::vector< std::vector< unsigned short > > &relationsArr, unsigned short goElementId, std::vector< unsigned short > visitedIndexesPathArr ) {
printf( "nВход в компонент: %in", goElementId );
// Обследуем дороге с целью посещения - в случае если есть с целью нынешногокомпонента: for ( unsigned short i = 0; i < relationsArr[ goElementId ].size(); i++ ) {
printf( "t> Допустимый курс: %i с целью %i элемента", relationsArr[ goElementId ][ i ], goElementId );
bool notVisited = true; // Обследуем - никак не навещали единица я relationsArr[ goElementId ][ i ] (допустимый курс с целью посещения) сейчас в нашем пути for ( unsigned short i1 = 0; notVisited && ( i1 < visitedIndexesPathArr.size() ); i1++ ) if ( relationsArr[ goElementId ][ i ] == visitedIndexesPathArr[ i1 ] ) notVisited = false;
if ( notVisited ) {
printf( " - никак не посещён! Навещаем...n" );
visitedIndexesPathArr.push_back( relationsArr[ goElementId ][ i ] ); // запоминаем его равно какпосещённый goElement( relationsArr, relationsArr[ goElementId ][ i ], visitedIndexesPathArr ); // Приезжаем вследующий
} else {
printf( " - посещёнn" );
}
}
printf( "ttВсе посещены, итоговый курс: " ); for ( unsigned short i2 = 0; i2 < visitedIndexesPathArr.size(); i2++ ) printf( "%i, ", visitedIndexesPathArr[ i2 ] ); printf( "n" );
}
int main() {
std::vector< std::vector< unsigned short > > relationsArr { {1,5,6}, {0,2,6}, {1,3,6}, {2,4,6}, {3,5,6}, {0,4,6}, {0,1,2,3,4,5} };
std::vector< unsigned short > visitedIndexesPathArr; visitedIndexesPathArr.push_back( 0 ); goElement( relationsArr, 0, visitedIndexesPathArr );
}
|
|
| |