获取C中所有数字的组合

我需要获得给定集合的所有可能组合.例如,给定:[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中做到这一点?请注意,我是一个完整的初学者.

提前致谢.

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

The strings with 3 numbers of the set {1,4,7} are built by taking the strings with 2 numbers of the same set and prepending each element of the set.

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

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

转载注明原文:获取C中所有数字的组合 - 代码日志