0

我有一个小问题,我需要在给定一组数字的情况下找到所有可能的路径。例如,假设我们有数字 1、2 和 3。我需要找到所有可能的组合。这个简单案例的结果是:
path_1 = 1
path_2 = 2
path_3 = 3
path_4 = 1, 2
path_5 = 1, 3
path_6 = 2, 3
path_7 = 1, 2, 3

很容易看出路径的数量是(2^n)-1,所以对于 3 个元素,它是 7,依此类推。对于少量元素,手动执行此操作非常简单,但随着数字变大,它变得越来越难。

有人建议我可以使用 boost 图形库来解决这个问题,但我不太确定该怎么做,因为我没有足够的经验。任何帮助将非常感激。

提前致谢

4

1 回答 1

0
template< class It >
void compute_all_possible_paths( path_collection_t& res, It b, It e ) {
    std::size_t curVecSize = res.size();
    for( std::size_t i = 0; i < curVecSize; i++ ) {
        path_t p;
        p.reserve( res[i].size() + 1 );
        std::copy( res[i].begin(), res[i].end(), std::back_inserter(p) );
        p.push_back( *b );
        res.push_back( p );
    }
    path_t p;
    p.push_back( *b );
    res.push_back( p );
    if( ++b == e ) return ;
    compute_all_possible_paths( res, b, e );
}
于 2012-10-18T22:53:12.027 回答