将正整数分解为更多整数,使得与原始整数相同

时间:2014-10-19 08:06:53

标签: algorithm

今天有一个面试问题,我无法解决 寻找你的建议

  • 正整数M的分解是一组唯一的正整数,其和为M
  • ex:7 = 1 + 6 = 2 + 5 = 3 + 4 = 1 + 2 + 4

需要编写一个计算所有这些独特组合的函数

1 个答案:

答案 0 :(得分:2)

你需要打印它们吗?然后,这样的事情:

int a[100]; a[0] = 0; //to store composition

void rec(int x, int p) {
   for ( int i = a[p-1]+1; i <= x; i++ )
       if (x - i > i ) {
           a[p] = i;
           rec(x - i, p+1);
        } else {
           a[p] = x;
           //print if needed
           for ( int j = 1; j <= p; j++ )
               cout << a[j] << ' ';
           cout << endl;
           return;
        }
}

而不是打电话

rec(n, 1);