【问题描述】
棋盘上A点有一个过河卒,需要走到目标Bdian。卒行走的规则:可以向下、或者向右。同时在棋盘上C点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点。因此称之为“马拦过河卒”。棋盘用坐标表示,A点(0,0),B(n,m),同样马的位置坐标是需要给出的。

先上完整代码

public static void main(String[] args){int MAXN = 20+2;int MAXM = 20+2;boolean [][]vis = new boolean [MAXN][MAXM];//全局变量会被初始化为零,false表示可以走long [][]ans = new long [MAXN][MAXM];//用ans数组存储到每一个点共有多少条路径Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int m = scanner.nextInt();   //n,m表示棋盘的大小int x = scanner.nextInt();int y = scanner.nextInt();   //x,y表示马的位置//处理马能控制的坐标vis[x][y] = true;    //true表示不能走int [][]moves = new int[][]{{1,-2},{2,-1},{1,2},{2,1},{-1,2},{-2,1},{-1,-2},{-2,-1}};  //此数组存放八个坐标,静止的马走一步可达到的所有点,下,x,y表示加或减for(int i=0;i<8;i++){int nx = x+moves[i][0];int ny = y+moves[i][1];if(nx>=0 && nx<=n && ny>=0 && ny<=m;){vis[nx][ny]=true;   //以上将所有不能走的点处理完毕}}for(int i=0;i<=n;i++){for(int j=0;j<=m;j++){if(vis[i][j] == true)ans[i][j] = 0;else if(i == 0 || j == 0)ans[i][j]=1;elseans[i][j] = ans[i]j-1] + ans[i-1][j];}}System.out.println(ans[n][m]);
}

【算法过程】
当我知道这题的定位的时候,我也清晰的认识到自己的水平,这是一道非常基础的动态规划题,题目难度一颗星,但是我确实是想了一天才知道怎么做,我写的过程添加了备注,应该更好的理解了。
有非常重要的一点,首先你要知道马是怎么走的,我当时看见马的控制点也是有点蒙的,去网上找,发现大家的回答都是 不是吧不是吧竟然有人连马走日字都不知道,这看了也没明白,其实很简单,马完整的跳一步是一脚直的,一脚斜着,具体如图所示

图中1 2 3 4 5 6 7 8表示了在P点静止的马控制的点,知道这个这个题就简单多了。
了解在坐标系中每个点到他的路线有几条,用二维数组很好解决

Java (过河卒)相关推荐

  1. Java 洛谷 P1002 过河卒讲解

    题目描述 棋盘上AA点有一个过河卒,需要走到目标BB点.卒行走的规则:可以向下.或者向右.同时在棋盘上CC点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点.因此称之为" ...

  2. (Java实现) 过河卒

    过河卒 题目描述 棋盘上AA点有一个过河卒,需要走到目标BB点.卒行走的规则:可以向下.或者向右.同时在棋盘上CC点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点.因此称之为&q ...

  3. 过河卒问题(java实现)

    过河卒问题(java实现) 题目描述 输入格式 一行四个正整数,分别表示B点坐标和马的坐标 输出格式 表示所有路径条数的一个整数 输入输出样例 输入:6 6 3 3 输出:6 注:对于100%的数据, ...

  4. Luogu P1002 过河卒(DP)

    P1002 过河卒 题目描述 棋盘上A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下.或者向右.同时在棋盘上C点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点.因此称之 ...

  5. 过河卒(Noip2002)

    [题目描述] 棋盘上A点有一个过河卒,需要走到目标B点.卒行走的规则:可以向下.或者向右.同时在棋盘上的某一点有一个对方的马(如C点),该马所在的点和所有跳跃一步可达的点称为对方马的控制点,如图3-1 ...

  6. 经典动态规划之过河卒【洛谷 P1002】

    传送门 因为小兵只能往右走和往下走 所以动态转移方程为map[i][j]=map[i-1][j]+map[i][j-1] 感觉上..是很经典的. 题目描述 棋盘上AAA点有一个过河卒,需要走到目标BB ...

  7. 马拦过河卒(NOIP2002)

    马拦过河卒(NOIP2002) (2010-05-14 15:57:22) 标签: 递归 杂谈 分类: 递归与回溯 Description : 如图,A点有一个过河卒,需要走到目标B点.卒行走的规则: ...

  8. SDUT 1265-马停下过河卒(DFS)

    马拦过河卒 Time Limit: 3000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描写叙述 棋盘上A点有一个过河卒,须要走到目标B点.卒行走的规则:可以向下. ...

  9. Codevs 1010 过河卒 2002年NOIP全国联赛普及组

    1010 过河卒 2002年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 传送门 题目描述 Description 如图,A 点有一个过河卒 ...

最新文章

  1. 【整理】Linux驱动中,probe函数何时被调用
  2. 演练:使用 TableLayoutPanel 在 Windows 窗体上排列控件
  3. 20155334 2016-2017-2 《Java程序设计》第四周学习总结
  4. go语言csv包_玩转数据处理120题R语言版本
  5. 数据库连接池的工作原理
  6. Spring mvc介绍
  7. qt输出中文乱码处理(解决方法)
  8. [BZOJ1030][JSOI2007]文本生成器
  9. 杂项:JFB-权限设置
  10. android jni socket
  11. 某些面向对象的思想--一步步更新
  12. 批处理命令调用WINRAR对文件进行压缩
  13. Raki的读paper小记:TriggerNER: Learning with Entity Triggers as Explanations for Named Entity Recognition
  14. 032-IDUtils 工具类模板
  15. 表白神器(VBS编程)
  16. android singleInstance 和 singleTask 的区别
  17. 老司机带你检测相似图片
  18. 【git提交报错】git commit 提交的时候报错husky > pre-commit (node v16.15.0) No staged files match any of provided
  19. 如何将eslipse的背景色变为暗黑色
  20. (3) openssl genrsa(生成rsa私钥)

热门文章

  1. 头条发布文章如何一篇文章发布道30+自媒体平台?
  2. 移动支付的浪潮下,支付接入会遇到哪些难题?
  3. a股行情接口功能特点
  4. The Church-Turing thesis
  5. [Excel函数] 计算统计类函数
  6. Excel函数 - 多条件统计
  7. 国内首个ChatGPT镜像系统?辅助写代码真方便
  8. 曙光g20服务器芯片组驱动,曙光i620-g20阵列卡驱动
  9. cygwin php5.6,cygwin-autoconf环境搭建
  10. OGG Data Pump进程