zoukankan      html  css  js  c++  java
  • (Java实现) 过河卒

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

    棋盘用坐标表示,AA点(0, 0)(0,0)、BB点(n, m)(n,m)(nn, mm为不超过2020的整数),同样马的位置坐标是需要给出的。

    现在要求你计算出卒从AA点能够到达BB点的路径的条数,假设马的位置是固定不动的,并不是卒走一步马走一步。

    输入输出格式
    输入格式:
    一行四个数据,分别表示BB点坐标和马的坐标。

    输出格式:
    一个数据,表示所有的路径条数。

    输入输出样例
    输入样例#1: 复制
    6 6 3 3
    输出样例#1: 复制
    6
    说明
    结果可能很大!

    import java.util.Scanner;
    
    
    public class guohezu {
    	
    	  static Scanner sc = new Scanner(System.in);
    	    static int Bx = sc.nextInt();
    	    static int By = sc.nextInt();
    	    static int Hx = sc.nextInt();
    	    static int Hy = sc.nextInt();
    	    static int A[][] = new int[Bx+1][By+1]; //用来存放马的位置以及它可以到达的地方
    	    static long M[][] = new long[Bx+1][By+1];//用来存放路线的
    	    public static void main(String[] args) {
    
    	        if (Hx >= 2) {
    	            A[Hx - 2][Hy + 1] = -1;
    	            if (Hy > 0)
    	                A[Hx - 2][Hy - 1] = -1;
    
    	        }
    	        if (Hy >= 2) {
    	            if (Hx > 0)
    	                A[Hx - 1][Hy - 2] = -1;
    	            A[Hx + 1][Hy - 2] = -1;
    
    	        }
    	        if (Hy > 0)
    	            A[Hx + 2][Hy - 1] = -1;
    	        if (Hx > 0)
    	            A[Hx - 1][Hy + 2] = -1;
    	        A[Hx][Hy] = -1;
    	        A[Hx + 1][Hy + 2] = -1;
    	        A[Hx + 2][Hy + 1] = -1;
    	        //上面的操作吧马可以到达的地方全部赋值为-1
    	        M[0][0]=1;
    	        for (int i = 0; i <=Bx; i++) {
    	            for (int j = 0; j <=By; j++) {
    	                if(i==0&&j>0)M[i][j]=M[i][j-1];//防止越界
    	                if(j==0&&i>0)M[i][j]=M[i-1][j];//防止数组越界
    	                if(i>0&&j>0)M[i][j]=M[i-1][j]+M[i][j-1];    //递推方程
    	                if(A[i][j]==-1)M[i][j]=0; //如果是马可到达的地方,那么撤回操作
    	            }
    	        }
    
    	         System.out.println(M[Bx][By]);
    	    }
    
    }
    
    
  • 相关阅读:
    LeetCode 345. Reverse Vowels of a String 题解
    LeetCode 344. Reverse String 题解
    LeetCode 27. Remove Element 题解
    LeetCode 61. Rotate List 题解
    LeetCode 19.Remove Nth Node From End of List 题解
    Android耗电量
    Android 使用adb查看和修改电池信息
    Android AOP AspectJ 插桩
    Flask相关用法
    Monkey日志信息的11种Event percentage
  • 原文地址:https://www.cnblogs.com/a1439775520/p/12948848.html
Copyright © 2011-2022 走看看