这道题估计在让我做一次,我还是做不出来的,想不到,且不好理解。
这道题用了BFS,广度优先搜索。利用queue队列,从“0000”开始,4个位置每个位置都有两个改变的方向,向上 或者 向下,故每个数 共八种可能,利用 unordered_set<string> 对每个判断过的字符串,进行剪枝。同时利用一个 char ch = tmp[j],一个变量存放当前要改变的元素,以便恢复原来的数。
针对于 9 变为 0 ,巧妙的用了 +10 然后取余
即 tmp[j] = ( tmp[j] - '0' + direction[k] +10 )%10 + '0'
题目 code
网友评论