在C++中获取数字的所有组合

Ros*_*nal 3 c++ algorithm

我需要获得给定集合的所有可能组合.例如,给定:[1,4,7],得到的组合应该是:

  • 111,114,117,141,144,147,171,174,177,411,414,417,441,444,447,471,474,477,711,714,717,741,744,747,771, 774,777.

我尝试使用next_permutation方法,但它不是我想要的(这不会返回像111,144,717等的值).

那么我有什么方法可以用C++做到这一点?请注意,我是一个完整的初学者.

提前致谢.

thi*_*ton 6

仔细看看这些数字:你列出的所有数字也可以表示为{11,14,17,41,44,47,71,74,77}列表,前缀为1,一次为4,一次为7这指向一般规则:

具有3个数字集合{1,4,7}的字符串是通过将字符串与2个相同集合的数字一起构建并在该集合的每个元素前面构建的.

在此规则中概括3和2,使用递归实现结果的想法,并且您有一个算法来解决您的问题.

作为C++实现说明,请确保使用字符串而不是整数来表示数字.这个问题不算算,而是与base-10表示紧密耦合.字符串将使您的生活更轻松.

  • 实际上,问题*是*算术 - 它只是在基数*n*(这里,3)中计数 - 因此,根本没有耦合到*base 10*表示. (3认同)