https://gist.github.com/lychees/568c58a47009028fb228
250. ShadowSculpture:
给定一个 6-连通的立体图形(只有一个连通块)的三视图,求是否合法。
如果某个位置是 ‘N’,那么肯定从这个角度看过去都没有图形。
那么假设其他位置都是砖块,这样可能导致图形不连通,于是每次 dfs() 出一个连通块,就判断是否用这个连通块就已经符合描述。
500. NarrowPassage2:
给了n(n <= 50)个数的数列,如果相邻的两个数 的和满足 <= k, 这两个数就可以交换。 问这个数列可以形成多少种不同的排列? 例如、{1,2,3}, k = 3 的话。。前两个数可以交换,所以答案是2。。 而 {1,1,1,1,1},2 = 2 的话。。任何排列都是合法的。。所以是 5!。 每次删除最小(或最大)的,计算贡献并递归。