文章链接:代码随想录
题目链接:力扣题目链接
图释:
class Solution {
public:
// unordered_map<出发机场, map<抵达机场, 航班次数>> targrts;
unordered_map> targrts;
bool backtracking(int ticketNum, vector& result){
// 所有机票都要用一次
if(result.size() == ticketNum+1){ //航线次数+1
return true;
}
// targrts[result[result.size()-1]] 从结果集里的最后一个目的地,作为出发地,找到以航班中的航线
for(pair& targrt: targrts[result[result.size()-1]]){
if(targrt.second > 0){ // 检测本航线是否飞过
result.push_back(targrt.first);
targrt.second--;
if(backtracking(ticketNum, result)) return true; // 如果下层递归有返true则继续向上返回true
// 没有返回找到航班则回溯
result.pop_back();
targrt.second++;
}
}
// 遍历完,以该地点作为出发地的航线都不行,则返回
return false;
}
vector findItinerary(vector>& tickets) {
targrts.clear();
vector result;
// vec = ["MUC","LHR"] 遍历赋值给vec
for(const vector vec : tickets){
// >
targrts[vec[0]][vec[1]]++;
}
result.push_back("JFK"); // 放入首发机场
backtracking(tickets.size(), result); // 航线次数
return result;
}
};
文章链接:代码随想录
视频链接:LeetCode:51.N皇后
题目链接:力扣题目链接
图释:
class Solution {
public:
vector> result;
bool isValid(int row, int col, vector chessboard, int n){
// 检测列
for(int i=0; i=0 && j>=0; i--,j--){
// 当row==clo==0时,不会进入
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;
}
// 传入棋盘
void backtracking(vector chessboard, int n, int row){
if(row == n){
// 在进入递归之前就判断该位置能否放入皇后了,所以当递归到最后一行,说明是合法的
result.push_back(chessboard);
return;
}
// 树层逻辑 遍历某行的每一列
for(int col=0; col> solveNQueens(int n) {
result.clear();
// 根据传入的n构建棋盘格
std::vector chessboard(n, std::string(n, '.'));
backtracking(chessboard, n, 0);
return result;
}
};
文章链接:代码随想录
视频链接:LeetCode:
题目链接:力扣题目链接
图释:
class Solution {
public:
bool isValid(int row, int col, char k, vector>& board){
for(int i=0; i<9; i++){// 判断行有无重复
if(board[row][i]==k)return false;
}
for(int j=0; j<9; j++){// 判断列有无重复
if(board[j][col]==k)return false;
}
// 判断格子中有无重复
int startRow = (row/3)*3;
int startCol = (col/3)*3;
for(int i=startRow; i>& board){
// 二维递归
for(int i=0; i>& board) {
backtracking(board);
}
};