[NOIP2002]过河卒 标准递归

发布于:2024-05-22 ⋅ 阅读:(152) ⋅ 点赞:(0)

 题目地址

登录—专业IT笔试面试备考平台_牛客网

输入输出描述

如果没有马存在 就是一个经典的递归题

// Dduo
// Bhu Bigdata 1421
package Dduo;
import java.util.*;
// Eslipse IDE 2020-08
// JDK 1.8
// 2024/5/21

public class Main  {
    static Scanner sc=new Scanner(System.in);
    static int cnt=0;
    public static void main(String[] args) {
    	//过河卒
    	//b
    	int n=sc.nextInt();
    	int m=sc.nextInt();
    	//马
//    	int x=sc.nextInt();
//    	int y=sc.nextInt();
    	//递归
    	rec(n,m);
    	
    	System.out.print(cnt);
    }
    public static void rec(int x, int y) {
    	//递归出口
    	if(x<0||y<0)return;
    	//递归式
    	else {
    		if(x==0&&y==0)cnt++;
    		else {
    			rec(x-1,y);
    			rec(x,y-1);
    		}
    	}
    }
 }

递归解法

// Dduo
// Bhu Bigdata 1421
package Dduo;
import java.util.*;
// Eslipse IDE 2020-08
// JDK 1.8
// 2024/5/21

public class Main  {
    static Scanner sc=new Scanner(System.in);
    //计数器
    static int cnt=0;
    //马
    static int horse_X,horse_Y;
    static int x1,y1;
    static int x2,y2;
    static int x3,y3;
    static int x4,y4;
    static int x5,y5;
    static int x6,y6;
    static int x7,y7;
    static int x8,y8;
    public static void main(String[] args) {
    	//过河卒
    	//b
    	int n=sc.nextInt();
    	int m=sc.nextInt();
    	//马
    	horse_X=sc.nextInt();
    	horse_Y=sc.nextInt();
    	
    	x1=horse_X+1;y1=horse_Y-2;
    	x2=horse_X+2;y2=horse_Y-1;
    	x3=horse_X+2;y3=horse_Y+1;
    	x4=horse_X+1;y4=horse_Y+2;
    	x5=horse_X-1;y5=horse_Y+2;
    	x6=horse_X-2;y6=horse_Y+1;
    	x7=horse_X-2;y7=horse_Y-1;
    	x8=horse_X-1;y8=horse_Y-2;
    	
    	//递归
    	rec(n,m);
    	
    	System.out.print(cnt);
    }
    public static void rec(int x, int y) {
    	//递归出口
    	//跑出棋盘
    	if(x<0||y<0)return;
    	//马的控制范围
    	if(x==horse_X&&y==horse_Y)return;
    	if(x==x1&&y==y1)return;
    	if(x==x2&&y==y2)return;
    	if(x==x3&&y==y3)return;
    	if(x==x4&&y==y4)return;
    	if(x==x5&&y==y5)return;
    	if(x==x6&&y==y6)return;
    	if(x==x7&&y==y7)return;
    	if(x==x8&&y==y8)return;
    	//递归式
    	if(x==0&&y==0)cnt++;
    		else {
    			rec(x-1,y);
    			rec(x,y-1);
    		}
    	}
 }


网站公告

今日签到

点亮在社区的每一天
去签到