zoukankan      html  css  js  c++  java
  • 中国象棋 在从0,0 象棋马经过k步到达某一点的方法数量

    package com.trs.codetool.core;

    /**
    * 2020/07/20
    * 中国象棋 在从0,0 象棋马经过k步到达某一点的方法数量
    */
    public class KStepMa {
    public static void main(String[] args) {
    // x,y 代表终点位置 k代表总共k步
    int x = 2,y = 3,k = 3;
    // 递归的方式
    //int num = getWay1(x,y,k);
    // 动态规划的方式
    int num = getWay2(x,y,k);
    // 动态规划的方式
    System.out.println("调到指定方法数:"+ num);
    }

    /**
    * 动态规划的方式
    * @param x
    * @param y
    * @param k
    * @return
    */
    private static int getWay2(int x, int y, int k) {
    int[][][] dp = new int[10][9][k+1];
    dp[0][0][0] = 1;
    for(int level = 1;level<k+1;level++) {
    for(int i=0;i<10;i++) {
    for(int j = 0;j<9;j++) {
    if(x < 0 || y < 0 || x > 9 || y >8) {
    dp[i][j][level] = 0;
    continue;
    }
    else {
    dp[i][j][level] = getValue(dp,i+2,j-1,level-1)
    + getValue(dp,i+2,j+1,level-1)
    + getValue(dp,i+1,j+2,level-1)
    + getValue(dp,i-1,j+2,level-1)
    + getValue(dp,i-2,j+1,level-1)
    + getValue(dp,i-2,j-1,level-1)
    + getValue(dp,i-1,j-2,level-1)
    + getValue(dp,i+1,j-2,level-1);
    }
    }
    }
    }
    for(int i=0;i<10;i++) {
    for(int j=0;j<9;j++) {
    System.out.println("i:"+i+"j:"+j+ "result:"+ dp[i][j][k]);
    }
    }
    return dp[x][y][k];
    }
    public static int getValue(int[][][] dp,int x,int y,int z) {
    if(x < 0 || y < 0 || x > 9 || y >8) {
    return 0;
    }
    return dp[x][y][z];
    }
    /**
    * 递归的方式
    * @param x
    * @param y
    * @param k
    * @return
    */
    private static int getWay1(int x, int y, int k) {
    if(k == 0) {
    return (x == 0 && y == 0) ? 1 : 0;
    }
    if(x < 0 || y < 0 || x > 9 || y >8) {
    return 0;
    }
    return getWay1(x+2,y-1,k-1)
    + getWay1(x+2,y+1,k-1)
    + getWay1(x+1,y+2,k-1)
    + getWay1(x-1,y+2,k-1)
    + getWay1(x-2,y+1,k-1)
    + getWay1(x-2,y-1,k-1)
    + getWay1(x-1,y-2,k-1)
    + getWay1(x+1,y-2,k-1);


    }
    }
  • 相关阅读:
    css之深入理解padding
    css布局大杂烩
    css深入理解margin
    css之深入理解border
    css样式画各种图形
    css Sprite雪碧图
    JVM,JRE,JDK
    JAVA 遍历数组
    JAVA 得到数组的长度
    大一对软件工程
  • 原文地址:https://www.cnblogs.com/zcg1051980588/p/13330228.html
Copyright © 2011-2022 走看看