【LC 1896】
我只想到了从正面的角度,没想到换个角度去做。
换个角度的时候我也过于纠结1~n不是连续的,而实际上只要看是不是最高的就可以。
所以说这个题非常好。https://leetcode.com/problems/number-of-ways-to-rearrange-sticks-with-k-sticks-visible/discuss/1211070/C%2B%2B-Detailed-Explanation-with-Thought-Process-or-DP
【LC 698】
这道题非常好!
https://leetcode.com/problems/partition-to-k-equal-sum-subsets/discuss/1020520/Java-Summary%3A-Two-DFS-one-DPBFS-solutions。
↑这个链接总结了4种方法。
这个问题其实化为,“将m个数,分成k组,使得每组和相等”。
2种DFS,2种BFS。
DFS的方法分成两种:
1、建立k个篮子,put item one by one.
2、fill each bucket one by one.
这两种DFS的代码都比较难写,尤其涉及回溯。
对于第一种DFS方法,要注意的是先填大的,此外就是if(_dfs(…)) return true。也就是递归的边界条件等等的写法。正确示例见5/26/2021的4ms的提交。
对于第二种DFS方法,要注意的是,就算先填好了一个篮子,但是这样的填法可能会导致后面的填不了。即不可以用
for(int i=0;i<k;++i) fillEachBucket();
的方法写,而是要写成递归和回溯的。正确示例见提交的5/26/2021的0ms