- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试使用动态规划解决以下类型的问题 - 我似乎无法找到重复出现的问题。问题如下:
“建筑物是由至少两个积木堆砌而成的结构。
你的任务是找到所有的方法,使得所有的方 block 都被用来建造建筑物。
例如,对于 n = 5,答案是 2,因为 [5] , [2 , 3] 。
对于 n = 6,答案是 4 因为 [6] , [2 , 4] , [2 ,2 ,2] , [3 ,3]"
谁能帮我理解如何从下往上或自上而下的方式做到这一点?
最佳答案
这与 partition problem 有相同的想法.让 f[i][j]
取消非递减大小块中 i
的分区数,使得最后一个 block 大小为 j
。那么,您的更新规则将是:
f[i+k][k] += f[i][j], for k>= max(2, j) // bottom-up approach
以及分区数量的答案:
f[n][2] + f[n][3] + ... + f[n][n]
或者,您可以使用自上而下的方法:
f[i][j] += f[i-k][k] for 2 <= k <= j
在您的示例上运行此命令:
Initialize f[i][i] = 1, i >= 2 and the rest set to 0
f[2][2] = 1
f[3][2] = f[1][2] = 0
f[3][3] = 1
f[4][2] = f[2][2] = 1
f[4][3] = f[1][2] + f[1][3] = 0
f[4][4] = 1
f[5][2] = f[3][2] = 0
f[5][3] = f[2][2] + f[2][3] = 1
f[5][4] = f[1][2] + f[1][3] + f[1][4] = 0
f[5][5] = 1
f[6][2] = f[4][2] = 1
f[6][3] = f[3][2] + f[3][3] = 1
f[6][4] = f[2][2] + f[2][3] + f[2][4] = 1
f[6][5] = f[1][2] + f[1][3] + f[1][4] + f[1][5] = 0
f[6][6] = 1
count(5) = f[5][2] + f[5][3] + f[5][4] + f[5][5] = 2
count(6) = f[6][2] + f[6][3] + f[6][4] + f[6][5] + f[6][6] = 4
关于algorithm - 动态规划 - build 建筑物的方法数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33163735/
我正在创建我的第一个 WAR 文件。我一直在试验 ant buildfile 语法,我的 buildfile 的第一部分从我的 Eclipse 项目中获取内容并将其放入 /dist 文件夹中,然后将其
我是一名学习 SQL 和 PHP 的学生,我接到了一项任务,要使用 PHP 和 mySQLi 创建学生反馈表,我真的一直在思考如何为项目设计数据库! 我正在创建一个系统,用户可以在其中登录网页,如果用
这个问题在这里已经有了答案: Is it possbile to test for expected errors when the testee exits with failure using
我目前正在设计和开发一个 Web 应用程序,该应用程序有可能快速增长。我将提供一些一般信息,然后继续我的问题。我会说我是一名中级网络程序员。 以下是一些规范:MySQL - 数据库后端PHP - 用于
我不知何故无法在我的日志解析器应用程序中实现报告功能。 这是我目前所做的: 我正在编写一个应用程序,它读取日志文件并在字符串中搜索可以在用户配置文件中定义的多个正则表达式。对于从配置中解析的每个所谓的
我有兴趣学习如何在多开发团队场景中设计/规划 Web 应用程序开发。 假设“项目经理/负责人”的角色: 成功的 Web 应用程序开发需要哪些“文档”? 需要什么 UML 图,需要什么程度? 在设计/计
table a (t_a): id name last first email state country 0 sklass klass steve
我们建立了一个广泛使用 JQuery UI 的 AJAX 网站。我们有 30 多个自制的 JQuery UI 小部件(动态加载)。我们到处都使用 JQuery native 小部件:对话框、 slid
我是一名优秀的程序员,十分优秀!