博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用K个数字(< 10)组成和为N的组合
阅读量:6272 次
发布时间:2019-06-22

本文共 589 字,大约阅读时间需要 1 分钟。

hot3.png

这个题目可以用递归的方式求解,设combineSum(k, n)表示用k个数字和为n的组合数,那么可以用来求解combineSum(k + 1, n + x) [x >= 1 && x <= 9],将x添加到每一个组合的头部即可;

代码如下:

def combinationSumK(k: Int, n: Int): List[List[Int]] = {  def go(k: Int, n: Int, x: Int): List[List[Int]] =    if (k == 1) List(List(n))    else {      for {        i <- (x + 1 until 10).toList        if (n - i > i)        list <- go(k - 1, n - i, i)      } yield i :: list    }  go(k, n, 0)}println(combinationSumK(3, 9))println(combinationSumK(4, 24))

这里的实现是使用combineSum(k, n, x)来表示的,x用来限定组合里面数字的起始值,这样可以起到排序和避免重复的作用;

转载于:https://my.oschina.net/u/922297/blog/419296

你可能感兴趣的文章
建设网站应该考虑哪些因素
查看>>
mongodb $exists
查看>>
js实现页面跳转的几种方式
查看>>
sbt笔记一 hello-sbt
查看>>
常用链接
查看>>
pitfall override private method
查看>>
springMVC数据绑定
查看>>
!important 和 * ----hack
查看>>
聊天界面图文混排
查看>>
控件的拖动
查看>>
svn eclipse unable to load default svn client的解决办法
查看>>
Android.mk 文件语法详解
查看>>
nGrinder3.2重磅发布
查看>>
QT liunx 工具下载
查看>>
Apache和PHP结合,httpd的虚拟主机配置
查看>>
PHP输出当前进程所有变量 / 常量 / 模块 / 函数 / 类
查看>>
Swoole源码学习记录(七)——MsgQueue
查看>>
Lucene6.0学习笔记——常用查询(一)
查看>>
内核源码树
查看>>
Java 5 特性 Instrumentation 实践
查看>>