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

标签 algorithm

今天遇到一道面试题,答不出来 正在寻找您的建议

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

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

最佳答案

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

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

关于algorithm - 将正整数分解为更多整数,使得总和与原始整数相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26448602/

相关文章:

algorithm - 找到所有可能的数字组合以达到给定的总和

css - 匹配 CSS 重复项的算法

algorithm - 我如何从一组不确定的猜测中进行选择?

algorithm - 关于随时算法

algorithm - 是否有任何好的算法来检测停止向服务器发送心跳的客户端?

algorithm - 将 Cartesian 5D 和 Angular 2D 转换为 Lat Long Alt

algorithm - 该算法的大 O 表示法是什么

mysql - 从 MySQL 结果构建深度树的最佳方法?

algorithm - "Hasty Pudding"密码的示例源代码?

ruby - 如何降低这个函数的复杂度?