以下是problem
您的号码为1≤N≤50。每张票都有2N位数字。如果前N个数字的总和等于其最后N个数字的总和,我们称这个票是幸运的。您还可以获得数字中所有数字的总和。您的任务是计算一定数量的幸运数字,具有指定的所有数字总和。
对于输入2 2输出为4(0101,0110,1001,1010)
你可以帮我解决这个问题吗?什么是最低复杂度?答案 0 :(得分:4)
如果需要的金额为s
,那么每一半都必须加上s/2
。现在,您需要找到f(n, s/2)
:有多少个n位数字的总和为s/2
。知道f(n, s/2)
,您可以在一行中得到答案(尝试自己搞清楚)。
关于如何计算f(n, m)
:这是标准DP。你有像f(n, m) = f(n-1, m) + f(n-1, m-1) + f(n-1, m-2) + ... + f(n-1, m-9)
这样的递归公式。在这里,0, 1, 2, .. 9
是给定数字的最后一位数的所有可能选项。如果最后一个数字为k
,则其余数字为(n-1)
- 长数字,数字加总数为m - k
。
希望它有所帮助。
PS根据问题的限制,你需要某种长的算术来传递它。
答案 1 :(得分:0)
<!-- no 'android:' prefix -->
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>