https://atcoder.jp/contests/abc198/tasks/abc198_d 解説 https://atcoder.jp/contests/abc198/submissions/21692252 覆面算のソルバーを普通に作る。 各文字にその数字を割り当てるかを全探索で決めていこう。 各文字にどの数字を割り当てるかということを考えると順列を作っているような感じになる。 順列の全探索に用いるのはdfsなので、dfsで頑張る。 dfsに入る前に使われている文字を集計して、被りなしの個数を見ておこう。 10個までなら数字を割り当て可能だが、それを超えると無理なのでUNSOLVABLEで答える。 dfs関数 dfs(cu) := cu番目の文字まで確定させている状態で入ってくる 全列挙の形は自然な形であるのでdfsの学習をしていれば理解できるだろう。 各文字について0~9の数字