很多人一听到“回溯”就头大,觉得这东西太玄乎,跟动态规划一样,听着就不好惹。其实在我看来,回溯算法的本质,就是一种“有组织的暴力枚举”。它没有那么神秘,你甚至可以把它理解成深度优先搜索(DFS)的一种特殊应用。 想象一下你在走一个迷宫,有很多条岔路。你怎么走?很简单,随便选一条路走到底,如果发现是死胡同,或者不是出口,怎么办?退回来,回到上一个岔路口,换一条没走过的路继续走。把这个过程重复下去,直到找到出口或者所有路都试过。 看,这就是回溯。“回”就是退回一步,“溯”就是寻找另一条路。 回溯算法...