![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划
文章平均质量分 57
yuhai_
这个作者很懒,什么都没留下…
展开
-
Partition to K Equal Sum Subsets
题目描述解题思路题目大意如下,给你一个一维int数组,且每个数大于0,再给你一个数字k,问是否可以将该数组分成k个子集,这k个子集的并集刚好为该int数组,交集为空,最关键的是,这k个子集每个子集的数字之和都相等。 仔细思考不难发现,要想满足题意,首先应该判断这个int数组的总和sum是否可以整除k,若能整除则就到了本题目的难点,怎么才能刚好划分成k个子集每个子集的数字和等于sum/k呢? 我想原创 2017-12-20 00:26:31 · 331 阅读 · 0 评论 -
Out of Boundary Paths
题目描述解题思路题目大意如下:给你一个m行n列的棋盘,再给你一个足球的初始位置,问在最多走N步(每一步只有向上、向下、向左、向右的方向可以选)的情况下,有多少条路径可以走出棋盘边界。 解题思路如下:因为最多可以走N步,而每一步都有四种方向可以选,如果是穷举的话显得不大可能,这时候可以考虑用动态规划,即要想找到在位置(i,j)最多走N步有多少条路径可以走出边界,可以先找到在位置(i,j)走了一步之后原创 2017-12-21 00:07:54 · 621 阅读 · 0 评论 -
Knight Probability in Chessboard
题目描述解题思路题目大意如下:一个N*N的棋盘,给定一个骑士的初始位置(r,c),再给一个步数限制K,表示这个骑士刚好可以走K步(每一步有8种走法,即“日”字型走法),问走过K步后还在棋盘内的可能。 这道题目和out of boundary path有异曲同工之处,因为每一步都有8种走法,那么K步就有8^K种可能,而我们只需要找出在这8^K种可能里有多少种是还未走出边界的,解法类似,但这里为了节省原创 2017-12-21 01:18:56 · 164 阅读 · 0 评论 -
Number of Longest Increasing Subsequence
题目描述解题思路题目要求我们在一个无序的整数数组里找出最长递增子序列的个数,显而易见,我们可以先找到最长递增子序列对应的长度是多少,接着就是要找这么长的递增子序列有多少个。 针对最长递增子序列,可以选用传统的动态规划解法LIS来解决,即dp[i]代表以下标i对应的数字结尾的序列中最长递增子序列的长度,那么dp[i]就应该在下标i之前比nums[i]数值小的dp长度中取最大值。 但之后的难题是怎么原创 2017-12-23 16:58:21 · 157 阅读 · 0 评论 -
2 Keys Keyboard
题目描述解题思路题目大意自不必说,至于说解法,这道题目有想过往动态规划方面去想,但想着想着就想偏了,最后另辟蹊径,通过对数字本身的研究而解出本题。大致思路如下: 对于n个字符A,如果想要找出最小的复制粘贴步数,为何不从它的因数找起呢?以42为例,42=21*2=7*3*2,也就是说我要先复制初始的一个A,粘贴得到一个A之后,再复制这两个A,粘贴2次得到6个A,再复制这6个A,粘贴6次就可以得到42原创 2017-12-27 23:18:15 · 265 阅读 · 0 评论