回溯
ShenHang_
一个编程小菜鸡
展开
-
191128题(机器人的运动范围(回溯))
思路:和矩阵中的路径那道题相似,甚至稍微简单了一点,仍然是回溯问题。#include<iostream>using namespace std;class Solution {public: int movingCount(int threshold, int rows, int cols) { int count = 0; if (threshold <=...原创 2019-11-20 23:03:59 · 187 阅读 · 0 评论 -
正则表达式匹配(递归)
class Solution {public: bool isMatch(string s, string p) { //如果正则串p为空字符串s也为空这匹配成功,如果正则串p为空但是s不是空则说明匹配失败 if (p.empty())return s.empty(); //判断s和p的首字符是否匹配,注意要先判断s不为空 bool headMatched = !s.emp...原创 2020-03-06 23:05:30 · 988 阅读 · 0 评论 -
解数独(回溯)
我觉得这题的思路还是很简单的,回溯法就是模拟人解数独时的简单想法:人在解数独的时候要注意每一行、每一列、每一个子数独中哪些数字已经被使用过了;一行一行的进行填充,填充完一行就到下一行继续填充;如果一个单元格中不为空,则去下一个单元格;如果一个单元格为空,我们就看一下这个单元格所属的行、列、子数独中有哪些数字没有使用过,就将未使用过的数字填入单元格,并且记录这个被填入的数字在此单元格所...原创 2020-03-03 17:24:30 · 341 阅读 · 0 评论 -
N皇后(回溯)
ps:皇后可以攻击同一行、同一列以及左上角、右上角、左下角、右下角这些角度方向上的任意单位。class Solution {public: vector<vector<string>> solveNQueens(int n) { vector<vector<string>>res; vector<vector<int&...原创 2020-02-29 17:52:50 · 193 阅读 · 0 评论 -
全排列ⅠⅡ(回溯+剪枝)
class Solution {public: vector<vector<int>> permute(vector<int>& nums) { vector<int>temp; vector<vector<int>>res; DFS(res, temp, nums, 0); return res...原创 2020-02-28 14:43:54 · 456 阅读 · 0 评论 -
电话号码的字母组合(DFS+回溯法)
思路:回溯法#include<iostream>#include<map>#include<vector>#include<iterator>#include<string>using namespace std;map<char, string> mp = { { '2',"abc" },{ '3',"de...原创 2020-01-06 16:19:32 · 414 阅读 · 0 评论 -
子集ⅠⅡ(回溯+剪枝)
class Solution {public: vector<vector<int>> subsets(vector<int>& nums) { vector<vector<int>> res; vector<int> temp; DFS(res, nums, 0, temp); return r...原创 2020-02-27 17:21:59 · 244 阅读 · 0 评论 -
路径总和ⅠⅡ(回溯法)
class Solution {public: vector<vector<int>> pathSum(TreeNode* root, int sum) { if (root == NULL) return res; DFS(root, sum); return res; } void DFS(TreeNode* root, int sum) {...原创 2020-01-27 20:52:32 · 251 阅读 · 0 评论 -
组合总和II(回溯)
只需在组合总和那道题上进行一些小改动即可,整体思路还是剪枝+回溯(DFS)#include <iostream>#include <vector>#include<algorithm>using namespace std;class Solution {private: vector<int>cur; vector<vect...原创 2020-01-27 16:15:33 · 156 阅读 · 0 评论 -
组合总和(回溯)
思路:回溯法+剪枝法(相当不错的题目)如输入: candidates = [2, 3, 5, 7],target = 7,所求解集为: [[2, 2, 3],[2,5], [7]]为了防止出现结果重复的情况(如[2,5]和[5,2]其实是同一个结果),对原始数组先进行升序排序,这样就能保证当前剪枝的值>=上一次剪枝的值。#include <iostream>#inc...原创 2019-12-13 17:15:29 · 277 阅读 · 0 评论