【算法学习】暴力递归和动态规划

飞行棋问题

  1. 在这里插入图片描述

法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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值