数塔问题----升级版
解决了数塔问题,,我们迎来了数塔问题的升级版
题面:
题面很简单,但是不同于之前的是,这一次检测的是个位数的大小
使路径上的数值的个位数的和尽量大
样例:
如果延续上一道题的想法,继续使用“子三角形”,即尝试 寻找最优子结构 来解题的话,可以推导得出如下结论:
乍一看好像没毛病,可惜这是一个 错误的推导,因为这里讨论的是和的个位数,并不具有最优子结构性质。
那么我们就要换一种方式思考了
升维思考,降维打击
首先,如果使用暴力枚举方式的话,肯定会超时。数塔问题的特点就是随着层数的增加,时间消耗成倍增加。
所以我们从题面入手,再看一次题面发现:
使路径上的数值的个位数的和尽量大
个位数的特点,不就是少么
所以我们设计一个很无脑 简单的算法:从大到小尝试
先假设得到的数字和为九,那么尝试是否可以得到九,如果不能,继续向下尝试
对,很简单,简单的让人不敢相信。这就是数学推导与算法适当结合的神奇的产物