ccf-csp 201809-4 再卖菜
递推+回溯吧
已知第二天的的菜价,然后从第一个店铺开始依次尝试推到第一天的菜价即可(就是不断递推),递推发现不满足时就回溯修改,思路比较简单。
但是要做好剪枝,否则会超时!
我这里使用了一个flag[N][110][110]
数组记录剪枝,flag[i][j][k]
代表之前是否计算过第i
个店铺价格为j
且第i-1
家店铺价格为k
的情况(因为如果一旦相邻两个店铺的价格确定,后续店铺的情况就和之前讨论过的一样了,无需再次计算,肯定是不能求得解的),给flag[i][j][k]
标记为true即可(说明曾经考虑过此情况,未能求得解)
代码如下:
1 |
|