只过了20,有佬来看看吗
查看原帖
只过了20,有佬来看看吗
583001
xjszsd楼主2023/3/15 21:44
	    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int n= sc.nextInt();//终点横坐标
        int m= sc.nextInt();//终点纵坐标
        int x= sc.nextInt();//马的横坐标
        int y= sc.nextInt();//马的纵坐标
        int[][] dp=new int[n+1][m+1];//表示在i,j 位置的最大路径数
        int[][] M={{x-1,y-2},{x-1,y+2},{x+1,y-2},{x+1,y+2},{x-2,y-1},{x-2,y+1},{x+2,y-1},{x+2,y+1},{x,y}};// 有马的位置
        for(int i=0;i<=n;i++){//初始化
            boolean isM=false;
            for(int j=0;j<9;j++){
                if(M[j][0]==0&&M[j][1]==i){
                    isM=true;
                    break;
                }else{

                    dp[0][i]=1;
                }
            }
            if(isM) break;
        }
        for(int i=0;i<=m;i++){//初始化
            boolean isM=false;
            for(int j=0;j<9;j++){
                if(M[j][0]==i&&M[j][1]==0){
                    isM=true;
                    break;
                }else{
                    dp[i][0]=1;
                }
            }
            if(isM) break;
        }

        for(int i=1;i<=n;i++){
            for(int k=1;k<=m;k++){
                boolean isM=false;
                for(int j=0;j<9;j++){
                    if(M[j][0]==i&&M[j][1]==k){
                        isM=true;
                        break;
                    }
                }
                if(!isM){
                    dp[i][k]=dp[i-1][k]+dp[i][k-1];
                }
            }
        }
        for(int i=0;i<=n;i++){
            for(int j=0;j<=m;j++){
                System.out.print(dp[i][j]+" ");
            }
            System.out.println();
        }
        System.out.println(dp[n][m]);
    }

2023/3/15 21:44
加载中...