题意:判断一个数是否能够被表示为多个数阶乘的和。
例如:9 = 1!+2!+3!。但是并不要求阶乘是连续的。比如7 = 1!+3!7也满足条件。
思路:这道题目都可以用0,1背包来做,首先最多使用到10!,然后把1到10的阶乘的和都打表了。
但是这里从discuss里面得到了一个更好的算法,因为1!+2!+3!<4!,这情况的成立,
所以如果这个数能够表示成为多个数的阶乘,那么我们可以转换为这个数减去他能减掉的最大的阶乘的数是否能被表示。
详细的思路看代码:
这思路也算是神一般的思路了。。佩服想出这算法的人。