网站开发介绍,asp网站合法,网络营销是什么证,中文域名的网站332.重新安排行程 题目链接#xff1a;力扣#xff08;LeetCode#xff09;官网 - 全球极客挚爱的技术成长平台 文档讲解#xff1a;代码随想录 C代码#xff1a;
class Solution {
public:
unordered_mapstring, mapstring, int targets;bool backtrack…332.重新安排行程 题目链接力扣LeetCode官网 - 全球极客挚爱的技术成长平台 文档讲解代码随想录 C代码
class Solution {
public:
unordered_mapstring, mapstring, int targets;bool backtracking(int ticketNum, vectorstring result) {if (result.size() ticketNum 1) {return true;}for (pairconst string, int target : targets[result[result.size() - 1]]) {if (target.second 0 ) {result.push_back(target.first);target.second--;if (backtracking(ticketNum, result)) return true;result.pop_back();target.second;}}return false;}vectorstring findItinerary(vectorvectorstring tickets) {targets.clear();vectorstring result;for (const vectorstring vec : tickets) {targets[vec[0]][vec[1]];}result.push_back(JFK);backtracking(tickets.size(), result);return result;}
};
51. N皇后 题目链接力扣LeetCode官网 - 全球极客挚爱的技术成长平台 文档讲解代码随想录 视频讲解这就是传说中的N皇后 回溯算法安排| LeetCode51.N皇后_哔哩哔哩_bilibili C代码
class Solution {
public:vectorvectorstring result;void backtracking(int n, int row, vectorstring chessboard) {if (row n) {result.push_back(chessboard);return;}for (int col 0; col n; col) {if (isValid(row, col, chessboard, n)) {chessboard[row][col] Q;backtracking(n, row 1, chessboard);chessboard[row][col] .;}}}bool isValid(int row, int col, vectorstring chessboard, int n) {for (int i 0; i row; i) {if (chessboard[i][col] Q) {return false;}}for (int i row - 1, j col - 1; i 0 j 0; i--, j--) {if (chessboard[i][j] Q) {return false;}}for(int i row - 1, j col 1; i 0 j n; i--, j) {if (chessboard[i][j] Q) {return false;}}return true;}vectorvectorstring solveNQueens(int n) {result.clear();std::vectorstd::string chessboard(n, std::string(n, .));backtracking(n, 0, chessboard);return result;}
};
37. 解数独 题目链接力扣LeetCode官网 - 全球极客挚爱的技术成长平台 文档讲解代码随想录 视频讲解回溯算法二维递归解数独不过如此| LeetCode37. 解数独_哔哩哔哩_bilibili C代码
class Solution {
public:bool backtracking(vectorvectorchar board) {for (int i 0; i board.size(); i) {for (int j 0; j board[0].size(); j) {if (board[i][j] .) {for (char k 1; k 9; k) {if (isValid(i, j, k, board)) {board[i][j] k;if (backtracking(board)) return true;board[i][j] .;}}return false;}}}return true;}bool isValid(int row, int col, char val, vectorvectorchar board) {for (int i 0; i 9; i) {if (board[row][i] val) {return false;}}for (int j 0; j 9; j) {if (board[j][col] val) {return false;}}int startRow (row / 3) * 3;int startCol (col / 3) * 3;for (int i startRow; i startRow 3; i) {for (int j startCol; j startCol 3; j) {if (board[i][j] val ) {return false;}}}return true;}void solveSudoku(vectorvectorchar board) {backtracking(board);}
};
总结 摘自 代码随想录知识星球 (opens new window)成员莫非毛 (opens new window)