蓝桥杯真题玩具蛇

Posted 蔚尺丈八声

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了蓝桥杯真题玩具蛇相关的知识,希望对你有一定的参考价值。

蓝桥杯真题【玩具蛇】

import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改

public class Main 
    public static void main(String[] args) 
      /*
      思路:
      本题和路径之谜的题相似,也是dfs+回溯+剪枝:https://www.lanqiao.cn/problems/89/learning/
      参照路径之谜的解法,以及相关题解:
      https://blog.csdn.net/DratYu/article/details/115485220

      可以得出本题的如下模板:
      1、所需数据结构:
      (1)一个二维数组存储格子标记路径是否访问过(1到n),相当于visit数组。
      (2)两个数组分别存x和y坐标的方向坐标,用于引导路径自某点下左上右的移动。
      (3)一个记录走过步数的变量step,用于终止条件的判断,也即记录了dfs向下走过多少层。
      (4)一个记录有多个方案满足终止条件的变量ans。
      2、代码结构:
      记录总方案数的变量ans=0;
      function dfs(x,y,step)
        //当前状态 == 目的状态,即dfs截止条件
        if(终止条件:step记录的步数达到了16)
          记录总方案数的变量ans+1;
        
        for((x,y)四个方向都试着走一遍)
          用1、的(2)数组更新下一个方向(走下一步)的(x,y)坐标;
          if(合法条件:如果下个格子未被访问,且下一步的(x,y)没有超出格子边界)
            visit数组标记对下一步的格子(x,y)访问过;
            对应下一步的格子(x,y)的靶数减1,用于控制路径朝向正确的方向;
            dfs(下一步的(x,y)坐标,step+1) // 对下一步的格子继续四个方向的尝试
            如果跳出了上面的dfs,说明不满足终止条件,那么此次尝试的方向不对,需要回溯,把visit数组对此方向下一步的格子(x,y)恢复访问状态;
          
        
      

      */
        Scanner scan = new Scanner(System.in);
        //在此输入您的代码...
        scan.close();
    

以上是关于蓝桥杯真题玩具蛇的主要内容,如果未能解决你的问题,请参考以下文章

第十一届蓝桥杯大赛软件类决赛(C/C++ 大学A组)

蓝桥杯省赛真题23Scratch贪吃蛇 少儿编程scratch蓝桥杯省赛真题讲解

第十一届蓝桥杯(国赛)——玩具蛇

蓝桥杯真题路径之谜

蓝桥杯真题路径之谜

蓝桥杯国赛真题9Scratch贪吃蛇 少儿编程scratch蓝桥杯国赛真题讲解