332.重新安排行程
比起每一次找下一站的那一层一张一张票找==>直接一个map记录所有图的出发和到达每一层直接根据出发一步找到可能的到达,
unordered_map<string, map<string, int>> targets;
<出发string,map<到达string,剩余票数int>>,
同时这个map是直接按字母顺序排列的!
for (pair<const string, int>& target : targets[result[result.size() - 1]])
是直接按字母顺序开始查找的!
所以回溯返回值是bool==>void遍历全部/bool找到一条直接一路true回来(因为已经是字母顺序了)
51. N皇后
回溯的办法很好想,就是每加入一个皇后一层,就是如何去掉同行列斜的方法想不具体
1.行不用检查,每层回溯就放入一个
2.因为是从上往下放,只检查上方的列和左上右上的斜角就行了
37. 解数独
对于如何同时回溯九格和横竖不太确定了
填一个数一层,就是这么多层!
每一层找到最左最上的空位填数==>每层试九种可能
判断是否合法!就是暴力寻找行/列/当前处于的九宫格 !!!
总结
树!