【问题标题】:decomposing positive integer into more integers such that sum same as original将正整数分解为更多整数,使得总和与原始整数相同
【发布时间】:2014-10-19 08:06:52
【问题描述】:

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

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

需要编写一个计算所有此类唯一组合的函数

【问题讨论】:

  • 这方面的技术术语是“整数分区”,用这个关键字进行搜索会给你很多想法。
  • @yossico:严格来说,该链接中的算法是针对唯一分区的,而不是针对唯一整数的唯一分区。但是,这两个问题高度相关,因此可以作为答案的基础。

标签: algorithm


【解决方案1】:

您需要打印它们吗?然后,像这样:

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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-02
    • 2022-11-19
    • 2012-03-21
    • 1970-01-01
    • 2011-11-13
    • 2013-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多