目录

  • 一、题目
  • 二、题解
    • 2.1 暴力递归
    • 2.2 动态规划

一、题目

把一个棋盘放到第一象限,棋盘的最左下角是(0,0)位置,整个棋盘是横坐标上又9条线,纵坐标上有10条线的区域,给定3个参数x,y,k
返回“马”从(0,0)位置出发,必须走k步到(x,y)的方法数有多少种

二、题解

2.1 暴力递归

递归函数:

含义:当前来到了(x,y)这个位置,返回走rest步移动到(a,b)位置的方法数,所以主函数应该这样调用

初始位置(0,0),剩余步数k,目标位置(a,b)

终止条件:当x,y的位置越界了,直接返回0
放rest==0时,如果移动到了目标位置,则返回这一种方法发,否则返回0.

普遍情况:

源码:

 //当前位置x,y//剩余rest步//目标位置a,b//10*9public static int process1(int x,int y,int rest,int a,int b){if(x<0||x>9||y<0||y>8){return 0;}if(rest==0){return (x==a&&y==b)?1:0;}int ways=process1(x+2,y+1,rest-1,a,b);ways+=process1(x+1,y+2,rest-1,a,b);ways+=process1(x-1,y+2,rest-1,a,b);ways+=process1(x-2,y+1,rest-1,a,b);ways+=process1(x-2,y-1,rest-1,a,b);ways+=process1(x-1,y-2,rest-1,a,b);ways+=process1(x+1,y-2,rest-1,a,b);ways+=process1(x+2,y-1,rest-1,a,b);return ways;}

2.2 动态规划


源码:

   public static int jump2(int a,int b,int k){//x的变化范围是0~9//y的变化范围是0~8//rest的变化范围是0~kint[][][] dp=new int[10][9][k+1];dp[a][b][0]=1;for (int rest = 1; rest <=k ; rest++) {for(int x=0;x<=9;x++){for (int y = 0; y <=8; y++) {int ways=pick(dp,x+2,y+1,rest-1);ways+=pick(dp,x+1,y+2,rest-1);ways+=pick(dp,x-1,y+2,rest-1);ways+=pick(dp,x-2,y+1,rest-1);ways+=pick(dp,x-2,y-1,rest-1);ways+=pick(dp,x-1,y-2,rest-1);ways+=pick(dp,x+1,y-2,rest-1);ways+=pick(dp,x+2,y-1,rest-1);dp[x][y][rest]=ways;}}}return dp[0][0][k];}public static int pick(int[][][] dp,int x,int y,int rest){if(x<0||x>9||y<0||y>8){return 0;}return dp[x][y][rest];}

【刷题篇】象棋“马”移动到目标位置相关推荐

  1. 【嵌入式入门篇】嵌入式0基础沉浸式刷题篇1

    嵌入式-入门沉浸式刷题篇 前言 Q1:嵌入式牛牛宏大小 Q2:嵌入式宏空间坐标数量 Q3:嵌入式牛牛疑惑的变量 Q4:嵌入式关键字const Q5:嵌入式机器的大小端 Q6:嵌入式不用排序找数字 Q7 ...

  2. 【Verilog刷题篇】硬件工程师从0到入门2|组合逻辑

    Verilog从0到入门2-组合逻辑 前言 Q1:4位数值比较器电路 Q2:4bit超前进位加法器电路 Q3:优先编码器电路① Q4:用优先编码器①实现键盘编码电路 Q5:优先编码器Ⅰ Q6:使用8线 ...

  3. 【Python刷题篇】Python从0到入门3|循环、条件复习、元组入门、字典入门

    Python从0到入门3目录 前言 Q1:团队分组 Q2:禁止重复注册 Q3:元组-牛客运动会 Q4:字典-遍历字典 Q5:字典-毕业生就业调查 Q6:姓名与学号 总结 前言 - 本期是Python从 ...

  4. 【Python刷题篇】Python从0到入门4|字典复习、函数入门、综合实践

    Python从0到入门3目录 前言 Q1:字典复习-首都 Q2:函数入门-求差 Q3:函数入门-牛牛的朋友 Q4:综合案例:自动售卖饮料机 Q5:综合案例-被8整除的数字 Q6:综合案例-披萨店的订单 ...

  5. 【Go语言刷题篇】Go完结篇|函数、结构体、接口、错误入门学习

    Go从0到入门6-Go完结篇 前言 Q1:函数-数字的阶乘 Q2:函数-绝对值 Q3:函数-加减乘除 Q4:结构体-学生信息1 Q5:结构体-学生信息2 Q6:接口-动物和老虎 Q7:错误-网络延迟 ...

  6. 【Leetcode刷题】:Python:494. 目标和

    题目 494. 目标和 代码:dp class Solution:def findTargetSumWays(self, nums: List[int], target: int) -> int ...

  7. 牛客刷题篇:客似云来 和 剪花布条(Java)

    目录 题目一:客似云来 输入描述 输出描述 解题思路 代码 题目二:剪花布条 输入描述 输出描述 解题思路 代码 题目一:客似云来 链接:客似云来 NowCoder开了一家早餐店,这家店的客人都有个奇 ...

  8. 【Leetcode刷题篇】leetcode141 环形链表II

    给定一个链表,返回链表开始入环的第一个节点. 如果链表无环,则返回 null. 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始). 如果 pos 是 - ...

  9. 【Leetcode刷题篇】leetcode75 颜色分类

    给定一个包含红色.白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色.白色.蓝色顺序排列. 此题中,我们使用整数 0. 1 和 2 分别表示红色.白色和蓝色. ...

最新文章

  1. innodb_buffer_pool_size的安全上限
  2. NeurIPS 2019最热趋势-贝叶斯深度学习
  3. 使用React和axios设置服务器端渲染的最简单方法
  4. 计算机科学之美,计算机科学的美学探讨
  5. echarts地图地名显示_echarts显示自定义中国地图——笔记
  6. 汽车行业如何玩转“Web3.0”?智己汽车“原石谷”开启区块链应用新场景!
  7. HDU6397 Character Encoding 插板法+容斥
  8. 将Ubuntu主文件夹里的中文文件夹名称改成英文
  9. syslog 向内存中缓存_内存问题排查手段及相关文件介绍
  10. uva1594 水题
  11. 问题:SQL Server数据库不允许更改
  12. 实时音视频会议场景下QoS策略
  13. 最简单的SVN英文版变中文版的方法
  14. MAC A1466 820-00165-A 进水不触发
  15. AD17如何将图片转化为PCB图片丝印,定制你的专属logo!
  16. 【总结】1172- 在滴滴和头条干了2年,分享几点感悟!
  17. Nginx教程(2)
  18. 没想到吧!没签劳动合同,能不能拿到双倍工资赔偿?今天统一回复~【文末送书】...
  19. 华为、TCL、大疆面试经历!32K高薪996和18K朝九晚五,我该怎么选?
  20. 广播风暴原理,成因及解决办法(个人整理)

热门文章

  1. 选电子工程被劝退,真的没前景了?
  2. 新年首日涨姿势不能停:召回→排序→重排技术演进趋势深度总结
  3. 桩筏有限元中的弹性板计算_采用PKPM系列JCCAD软件桩筏筏板有限元方法计算的模型参数...
  4. WhatsApp CEO解释为何取消订阅年费
  5. 短视频系统源码,检测在手机上的触摸按下、拖拽、抬手
  6. 辞职考研,干的漂亮!
  7. Android趣味课程:寻觅红桃A的翻牌游戏
  8. B站面试官“飘了”,可游戏行业不应只有面包
  9. ​年会视频直播如何做
  10. 集全球之智:2019世界机器人大会在京开幕