作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
问题:给定n,找出将n写成1、3、4之和的不同方式的数目示例:对于 n=5,答案是 6
5=1+1+1+1+1
5=1+1+3
5=1+3+1
5=3+1+1
5=1+4
5=4+1
我试过排列法,但是效率很低,有没有更高效的方法呢?
最佳答案
使用带有查找表的动态编程(使用散列实现,因为它使代码更简单):
nums=[1,3,4]
n=5
table={0=>1}
1.upto(n) { |i|
table[i] = nums.map { |num| table[i-num].to_i }.reduce(:+)
}
table[n]
# => 6
注意:仅检查其他答案之一,我的 n=500 是瞬时的。
关于ruby - 给定n,在ruby中如何求出n为1、3、4之和的不同写法的个数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26081128/
我正在尝试更改 NSAttributedString 中的写入方向。但是,我真的很难弄清楚该怎么做。 CTFontRef fontRef = CTFontCreateWithName((CFStrin
环境准备 数据库版本:MySQL 5.7.20-log 建表 SQL DROP TABLE IF EXISTS `t_ware_sale_statistics`; CREATE TABLE `t_wa
我确定有一种更惯用的 ruby 方式来编写下面的代码: @var = obj['blah'] unless obj['blah'].nil? 我有很多事情要做(见下文),一定有更好的方法! @nu
我是一名优秀的程序员,十分优秀!