2016 第七届 蓝桥杯 国赛 路径之谜
来源:互联网 发布:虚拟机下安装linux 编辑:程序博客网 时间:2024/06/05 17:15
路径之谜
小明冒充X星球的骑士,进入了一个奇怪的城堡。
城堡里边什么都没有,只有方形石头铺成的地面。
假设城堡地面是 n x n 个方格。【如图1.png】所示。
按习俗,骑士要从西北角走到东南角。
可以横向或纵向移动,但不能斜着走,也不能跳跃。
每走到一个新方格,就要向正北方和正西方各射一箭。
(城堡的西墙和北墙内各有 n 个靶子)
同一个方格只允许经过一次。但不必做完所有的方格。
如果只给出靶子上箭的数目,你能推断出骑士的行走路线吗?
有时是可以的,比如图1.png中的例子。
本题的要求就是已知箭靶数字,求骑士的行走路径(测试数据保证路径唯一)
输入:
第一行一个整数N(0
package lq.lq2016;import java.util.Scanner;/* * * *//*20 201 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2020 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 41 1 1 44 1 1 1*/public class RoadMistery { static int N, tot; static int maxn = 25; static int[] top = new int[maxn]; static int[] left = new int[maxn]; static int[] top2 = new int[maxn]; static int[] left2 = new int[maxn]; static int[] dx = { -1, 1, 0, 0 }; static int[] dy = { 0, 0, -1, 1 }; static int[] ans = new int[400]; static int vis[][] = new int[25][25]; static void dfs(int x, int y, int ind) {// 当前位于(x,y)点,搜索第ind个点 if (ind == tot - 1 && x == N - 1 && y == N - 1) { boolean flag = true; for (int i = 0; i < N; i++) if (top2[i] != top[i]) { return; } for (int i = 0; i < N; i++) if (left2[i] != left[i]) { return; } System.out.print(0 + " "); for (int i = 0; i < tot - 1; i++) { System.out.print(ans[i] + " "); } return; } for (int i = 0; i < 4; i++) { int tx = x + dx[i], ty = y + dy[i]; if (tx >= 0 && tx < N && ty >= 0 && ty < N && vis[tx][ty] == 0) { top2[ty]++; left2[tx]++; if (top2[ty] > top[ty] || left2[tx] > left[tx]) {// 两个条件不可分开continue,会造成 // vis[tx][ty]=0; top2[ty]--; left2[tx]--; continue; } vis[tx][ty] = 1; ans[ind] = tx * N + ty; dfs(tx, ty, ind + 1); vis[tx][ty] = 0; // ans[ind]=tx*N+ty; top2[ty]--; left2[tx]--; } } } public static void main(String[] args) { Scanner sc = new Scanner(System.in); N = sc.nextInt(); for (int i = 0; i < N; i++) { top[i] = sc.nextInt(); tot += top[i]; } for (int i = 0; i < N; i++) left[i] = sc.nextInt(); top2[0] = 1; left2[0] = 1; vis[0][0] = 1; dfs(0, 0, 0); }}
阅读全文
0 0
- 2016 第七届 蓝桥杯 国赛 路径之谜
- 蓝桥杯--第七届决赛:路径之谜
- 蓝桥杯 第七届决赛 路径之谜
- 蓝桥杯java第七届决赛第四题--路径之谜
- 蓝桥杯 第七届决赛第五题 路径之谜
- 蓝桥杯-第七届蓝桥杯java B组决赛 路径之谜
- 第七届蓝桥杯决赛路径之谜
- 第七届蓝桥杯决赛JavaB组第四题 路径之谜
- 2016 第七届 蓝桥杯 国赛 碱基
- 2016 第七届 蓝桥杯 国赛 机器人塔
- 湖南省第七届程序设计竞赛 最优对称路径
- 第七章 目录与路径
- 第七章 图(最短路径之dijkstra、 bellman-ford、floyd算法)
- 路径之谜
- 路径之谜
- 第七届 蓝桥杯 省赛 第七题 剪邮票
- 第七届 蓝桥杯 5题
- 蓝桥杯第七届 平方怪圈
- Git入门使用
- 2017 蓝桥杯模拟 风险度量
- 设置JTable每行的颜色
- 第一个Kotlin程序
- SpringMVC--JSON数据
- 2016 第七届 蓝桥杯 国赛 路径之谜
- 2016 第七届 蓝桥杯 国赛 碱基
- 系统研发随记
- Spring--IOC
- 2016 第七届 蓝桥杯 国赛 机器人塔
- 9. Palindrome Number
- 用好你的Control键(针对类Unix系统用户)
- 【python开发】利用PIP3的时候出现的问题Fatal error in launcher: Unable to create process using '"'
- Python学习笔记(三)