把 1 ~ 99 这 9 个数字分成两组,中间插入乘号, 有的时候,它们的乘积也只包含 1 ~ 9 这 9 个数字,而且每个数字只出现1次。
比如:
符合这种规律的算式还有很多,请你计算在所有这些算式中,乘积最大是多少?
注意,需要输出的是一个整数,表示那个最大的积,只输出乘积,不要输出整个算式。
dfs(cnt,mult):cnt选择次数,mult记录当前选择的数组成的乘积。
一共要做9次选择,每次做选择时只能从1~9中选,且同一路径上的数要去重。每次选择一个数后,更新mult的值,即第一操作数。
在第一操作数固定的情况下,如果要使乘积最大,那么第二操作数必须最大,所以第二操作数也可以求出,即在所有未被标记的数的组合情况的最大值。(逆序排列即可)
在一开始求出第二操作数,并判断它们的乘积是否合法,如果合法更新最大值。
注意:在每一次做选择之后都要求出第二操作数,并判断乘积是否合法。所以,这些操作在开头写,且不能用return语句返回掉,这类似求所有一组数的所有组合情况。
代码: