77. Combinations (Medium)
组合问题。给定两个整数 n
和 k
,返回从 1 ~ n
中选取 k
个数能构成的所有组合。
典型的回溯算法应用题,需要注意去重的思路。
路径问题。一个机器人在 m x n
矩阵的左上角 (0, 0) 位置,矩阵中存在诺干障碍物,机器人只能向下或者向右移动,你需要实现一个程序计算机器人有多少条路径可以到达右下角的 (m, n) 位置。
这是典型的 DP 问题。
国际象棋问题。给你一个 n x n
大小的棋盘,你需要在上面摆放 Queen 棋子,并且让棋子之间不能相互攻击。
Tips
Queen 可以在行、列、对角线和反对角线这四条线上随意行动,我们在放 Queen 时要保证这四个方向上没有 Queen 存在。
我们需要遍历尽可能多的摆放方法才能确认最终的答案,我们用回溯算法对枚举进行剪纸来解决这道题。
先读题,这种题真是脑细胞的初见杀。
Given an array of distinct integers candidates and a target integer target, return a list of all unique combinations of candidates where the chosen numbers sum to target. You may return the combinations in any order.
The same number may be chosen from candidates an unlimited number of times. Two combinations are unique if the frequency of at least one of the chosen numbers is different.
It is guaranteed that the number of unique combinations that sum up to target is less than 150 combinations for the given input.
数独问题。你需要实现一个游戏解决数独问题,数独游戏的规则如下:
1 - 9
只能出现一次;1 - 9
只能出现一次;3 x 3
的子矩阵中数字 1 - 9
只能出现一次。典型的回溯算法问题。