其他分享
首页 > 其他分享> > P1164 小A点菜题解

P1164 小A点菜题解

作者:互联网

思路分析:

以中间某个通过状态为样本进行分析,比如我们现在面对第\(i\)种菜,设\(f[i]\)是前\(i\)种菜的所有点菜方法,但仔细一想,这样不行,为什么呢?因为只考虑了菜,没考虑!不考虑钱的点菜是没有灵魂的~

所以前\(i\)种菜的点菜方法,是受钱数制约的,就是,还有另一个钱数的维度。所以,我们设\(f[i][j]\)给在前\(i\)种菜,在钱数上限\(j\)之内的点菜方法数。

注意:
本题是二维的,与前一题P2437 蜜蜂路线不一样,那个简单,是一维的。

\(f[i][j]\)是由哪些状态转移而来呢?我们可以想像,我们面对第\(i\)个菜,有三种情况:
一、剩余的钱数正好等于\(i\)号菜价格
1、选择购买。

2、不选择就是原来的。\(f[i][j]=f[i-1][j]\)

二、剩余的钱数大于购买\(i\)号菜价格
1、选择购买

2、不选择就是原来的。\(f[i][j]=f[i-1][j]\)

三、剩余的钱数小于购买第\(i\)号菜价格
1、没的选,只能是\(f[i][j]=f[i-1][j]\)

C++代码


标签:剩余,钱数,题解,选择,P1164,购买,种菜,点菜
来源: https://www.cnblogs.com/littlehb/p/15026093.html