飞行棋问题
法1:纯递归
法2:记忆搜索
法3:严格表结构的动态规划
假设星号是目标点
每个格子的值等于左上角+右上角的值
零钱问题
给一个整数数组,代表零钱,给一个int,零钱凑成int,最少需要几个零钱
- 无效解应该设置-1不应该设0,0代表是有效的
- 没考虑重复的情况
严格表结构:
如果不求最少,有多少种方法
赢牌问题
一个数组,两个人依次拿牌,可以拿头或尾,求最大分值
常规情况
严格表结构
- f(arr, i, j)和s(arr, i, j)分别是先手和后手的情况,结果是max(f(arr, 0, arr.length-1), s(arr, 0, arr.length-1)),即两个五角星的位置
- f函数中i=j时,最大分值只有一个选择,即只能拿i位置牌
- 对于f中任意点,等于s表中对称点位置的左边和下边两个点的最大值(s表的值与之相反,对应代码常规情况)。由于f中对角线可以先知道,就可以交替计算
象棋问题
马(马走日)从(0,0)到(x,y)位置,必须走k步,棋盘大小是9X10,返回方法数
常规方法
严格表结构
变化的参数有三个: x, y, step
所有step层的数都只和step-1层相关
贪吃蛇问题
给定棋盘,可以上下左右走,越界则死亡,求生存概率
求方法数:
总方法数:
4
k
4^{k}
4k