[NOIP2002]过河卒 标准递归

简介: [NOIP2002]过河卒 标准递归

题目地址

登录—专业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);
        }
      }
 }

目录
相关文章
|
9月前
|
机器学习/深度学习 人工智能 网络架构
P1563 [NOIP2016 提高组] 玩具谜题(找规律,心要细,数学思维)
P1563 [NOIP2016 提高组] 玩具谜题(找规律,心要细,数学思维)
40 0
|
10天前
【洛谷 P1002】[NOIP2002 普及组] 过河卒 题解(递归+记忆化搜索)
`NOIP2002`普及组的过河卒问题是一个棋盘路径计数挑战。卒从$(0,0)$出发到$(n,m)$,只能向下或向右移动,马在$(c1,c2)$固定,控制某些点。任务是计算不受马阻挡的路径数。输入是目标和马的位置,输出是路径总数。使用动态规划和记忆化搜索避免重复计算,样例输入$(6,6,3,3)$输出$6$。代码中定义了$f(x,y)$计算$(x,y)$处的路径数,利用边界条件和递推关系计算。
8 0
|
10天前
|
C++
【洛谷 P1047】[NOIP2005 普及组] 校门外的树 题解(位集合)
**NOIP2005普及组问题:**给定长度为$l$的马路,上面等距种植着树,需移除位于建造地铁区域的树。输入包含马路长度和区域数,以及各区域起止点,输出移树后剩余树的数量。样例输入:$l=500$, $m=3$,输出:$298$。$20\%$数据无区域重合,$1 \leq l \leq 10^4$,$1 \leq m \leq 100$。解决方案利用位集合(bitset)表示树的状态,遍历区域将树设为0,最后统计1的数量。AC代码使用C++实现。
5 0
|
1月前
【错题集-编程题】过河卒(动态规划-路径问题)
【错题集-编程题】过河卒(动态规划-路径问题)
|
1月前
日拱一卒,月进一步(6)(杨辉三角2)
119. 杨辉三角 II - 力扣(LeetCode)
18 0
|
11月前
1314:【例3.6】过河卒(Noip2002)
1314:【例3.6】过河卒(Noip2002)
105 0
|
10月前
|
算法
【过河卒】回溯算法保姆式解题
【过河卒】回溯算法保姆式解题
60 0
【每日一道智力题】之如何最快的找到最轻的砝码
【每日一道智力题】之如何最快的找到最轻的砝码
131 0
|
C语言 C++
PTA团体程序设计天梯赛-练习集: L1-050 倒数第N个字符串 ( 15分 )
给定一个完全由小写英文字母组成的字符串等差递增序列,该序列中的每个字符串的长度固定为 L,从 L 个 a 开始,以 1 为步长递增。例如当 L 为 3 时,序列为 { aaa, aab, aac, ..., aaz, aba, abb, ..., abz, ..., zzz }。这个序列的倒数第27个字符串就是 zyz。对于任意给定的 L,本题要求你给出对应序列倒数第 N 个字符串。 输入格式: 输入在一行中给出两个正整数 L(2 ≤ L ≤ 6)和 N(≤105)。 输出格式: 在一行中输出对应序列倒数第 N 个字符串。题目保证这个字符串是存在的。 输入样例:
137 0
|
测试技术 C语言 C++
PTA团体程序设计天梯赛-练习集:L1-003 个位数统计
给定一个 k 位整数 N=dk−110k−1+⋯+d1101+d0 (0≤di≤9, i=0,⋯,k−1, dk−1>0),请编写程序统计每种不同的个位数字出现的次数。例如:给定 N=100311,则有 2 个 0,3 个 1,和 1 个 3。 输入格式: 每个输入包含 1 个测试用例,即一个不超过 1000 位的正整数 N。 输出格式: 对 N 中每一种不同的个位数字,以 D:M 的格式在一行中输出该位数字 D 及其在 N 中出现的次数 M。要求按 D 的升序输出。
155 0