蓝桥杯真题:玩具蛇(Java)
Posted 爱敲代码的三毛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了蓝桥杯真题:玩具蛇(Java)相关的知识,希望对你有一定的参考价值。
题目
小蓝有一条玩具蛇,一共有 1616 节,上面标着数字 11 至 1616。每一节都是一个正方形的形状。相邻的两节可以成直线或者成 9090 度角。
小蓝还有一个 4 × 44×4 的方格盒子,用于存放玩具蛇,盒子的方格上依次标着字母 AA 到 PP 共 1616 个字母。
小蓝可以折叠自己的玩具蛇放到盒子里面。他发现,有很多种方案可以将玩具蛇放进去。
下图给出了两种方案:
请帮小蓝计算一下,总共有多少种不同的方案。如果两个方案中,存在玩具蛇的某一节放在了盒子的不同格子里,则认为是不同的方案。
思路
dfs暴力搜,枚举每一个位置为开头
代码
import java.util.*;
public class Main
// (x,y)
static int[][] upDownLeftRight = -1,0,1,0,0,-1,0,1;
static int count = 0;
public static void dfs(int[][] arr, int x, int y, int num)
if (num == 15)
count++;
return;
for (int i = 0; i < 4; i++)
int newX = x + upDownLeftRight[i][0];
int newY = y + upDownLeftRight[i][1];
if (newX < 0 || newX >= 4 || newY < 0 || newY >= 4 || arr[newX][newY] == 1)
continue;
arr[newX][newY] = 1;
dfs(arr, newX, newY, num+1);
arr[newX][newY] = 0;
public static void main(String[] args)
Scanner sc = new Scanner(System.in);
int[][] arr = new int[4][4];
for (int i = 0; i < 4; i++)
for (int j = 0; j < 4; j++)
// 起点也要标记
arr[i][j] = 1;
dfs(arr, i, j,0);
arr[i][j] = 0;
System.out.println(count);
运行结果
552
以上是关于蓝桥杯真题:玩具蛇(Java)的主要内容,如果未能解决你的问题,请参考以下文章
蓝桥杯省赛真题23Scratch贪吃蛇 少儿编程scratch蓝桥杯省赛真题讲解