(因为题目实在是太复杂麻烦了,所以我就直接截屏了啊,望谅解)
先理解一下题目吧(
我知道大家都看懂了,那我就不多说了,按老规矩给你们稍微总结一下吧)
- 首先,这道题我们要求的是最大当中的最小,就是说最后一个的分数的分母是最大的,这个就是最大的,然后我们又要让最大的这个分母最小。这个很关键因为这个关乎到了我们 dfs 当中的判断,换个角度想想如果没有这个的话,这道题就很简单了,直接搜索找到加起来的值是相同的就退出。
- 第二点就是因为这是分数,也就是说它有两部分,这就意味着如果我们直接就用这个分数的值来搜索的话,肯定会出问题:
- 你在定义的时候,如果是除不尽的小数怎么办?
- 我们的分子分母怎么样枚举,一起加还是说一起减?分开你要怎么折腾?
- dfs中的那个当前搜索的层数,分子分母各定义一个还是说分开定义
所以这些都是我们要考虑的,这些看起来很白痴的问题就为我们的搜索起到了一个极为重要的铺垫作用、
- 最简分数要用gcd的吧(求最大公约数的函数)
- 用来输出的数组要有吧
- 如果把dfs看成一棵树的话,这个最大层数和最小层数要有吧
- 还有就是说我们在搜索判断的时候,更新这个保存的数组要有吧
- 我们搜素判断的时候,一个bool要有吧,还有就是说dfs我们直接用bool,这样我们就直接搜索成功返回再输入,如果在dfs当中进行的话,可能会出错
- 最后的就是剪枝了吧