开始无从下手,后来参考了别人的思路 http://blog.csdn.net/shuangde800/article/details/7726620
有了思路后不知道怎么求环,后来发现题目说了没岔路。。
#include<stdio.h> #include<string.h> #define MAX 200 int w, h; char maze[MAX][MAX]; int cases = 1; int isCircle; int num; int circleCount; int maxLen; int hasCircle; int dir[8][2] = { { -1, 0 }, { 1, 0 }, { 0, -1 }, { 0, 1 }, { -1, -1 }, { -1, 1 }, { 1, -1 }, { 1, 1 } }; int pass(int i, int j, int k) { if (k < 4) return 1; int x = i + dir[k][0]; int y = j + dir[k][1]; if (x >= 0 && y >= 0 && maze[x][j] == '\\' && maze[i][y] == '\\' && (k == 5 || k == 6)) return 0; if (x >= 0 && y >= 0 && maze[x][j] == '/' && maze[i][y] == '/' && (k == 4 || k == 7)) return 0; return 1; } void dfs(int i, int j) { if (i < 0 || j < 0 || i >= 2 * h || j >= 2 * w) { isCircle = 0; return; } if (maze[i][j] == '*' || maze[i][j] == '\\' || maze[i][j] == '/') return; maze[i][j] = '*'; num++; int k; for (k = 0; k < 8; k++) { if (pass(i, j, k)) { dfs(i + dir[k][0], j + dir[k][1]); } } } int main() { while (scanf("%d%d", &w, &h) != EOF) { if (w == 0) break; memset(maze, 0, sizeof(maze)); getchar(); int i, j; char ch; for (i = 0; i < h; i++) { for (j = 0; j < w; j++) { scanf("%c", &ch); if (ch == '\\') { maze[2 * i][2 * j] = '\\'; maze[2 * i + 1][2 * j + 1] = '\\'; } else if (ch == '/') { maze[2 * i][2 * j + 1] = '/'; maze[2 * i + 1][2 * j] = '/'; } } getchar(); } circleCount = 0; maxLen = -1; hasCircle = 0; for (i = 0; i < 2 * h; i++) for (j = 0; j < 2 * w; j++) { if (maze[i][j] == 0) { num = 0; isCircle = 1; dfs(i, j); if (isCircle && num >= 4) { hasCircle = 1; circleCount++; if (num > maxLen) maxLen = num; } } } printf("Maze #%d:\n", cases++); if (hasCircle) { printf("%d Cycles; the longest has length %d.\n\n", circleCount, maxLen); } else { printf("There are no cycles.\n\n"); } } return 0; }
相关推荐
【标题】"uva705-Slash-Maze-.rar_Slash_uva705" 指向的是一个在UVa Online Judge (UVa OJ) 上提交并通过的编程问题,具体为问题编号705,名为"Slash Maze"。这个压缩包很可能包含了该问题的解决方案源代码。 ...
通过"tutorial-dark-slash-master"项目,学习者将了解游戏开发的基本构成,包括游戏场景、角色、敌人、碰撞检测、动画以及用户交互等元素。这一步骤是理解游戏开发流程的关键。 3. **项目结构分析** 项目的文件...
在压缩包文件`phpnet-laravel-trailing-slash-master`中,可能包含了示例代码或者一个示例项目,用于演示如何在Laravel中实现尾随斜杠的处理。你可能需要解压并查看这个项目的源代码,学习作者是如何处理这个问题的...
《PyPI官网下载:探索discord-ext-slash-0.3.0rc1.tar.gz中的Python库奥秘》 PyPI(Python Package Index)是Python开发者的重要资源库,它提供了无数的开源Python库供全球开发者使用。本文将深入探讨标题中提到的...
`remove-trailing-slash-master` 压缩包文件可能是该开源库的源码仓库,包含项目的主分支代码。开发者可以将其克隆到本地,通过阅读源码理解其工作原理,或者直接在项目中引用库文件,利用其提供的API来删除字符串或...
`vim-slash`插件是Vim社区为提升搜索体验而开发的一个扩展,它为Vim带来了更加强大的缓冲区搜索功能,极大地提升了开发者的生产力。 ### 1. Vim-slash 插件介绍 `vim-slash` 是一个基于Vim的插件,它的主要目标是...
"tutorial-dark-slash-master"是整个项目的根目录,通常包含项目配置文件、资源、脚本、场景、精灵和其他相关文件。在这个压缩包中,你可能会看到如下的文件和文件夹: 1. `assets`:这个文件夹存放所有游戏的资源...
discord-slash-commands,一个易于使用的软件包 如何安装 这很简单! 只需运行`npm i @ daimond113 / discord-slash-commands`,您就完成了! 如何使用 首先,如果您遇到了麻烦,可以在上询问,或者查看您将需要一...
《hack-n-slash-sprint: 12小时内构建的快节奏砍杀游戏》 在IT行业中,游戏开发是一项富有挑战性的任务,它涉及到编程、艺术设计、音效、动画等多个领域。"hack-n-slash-sprint"是一个由JavaScript语言开发的砍杀类...
dot-slash-2是的库版本,它是leiningen插件。 它使您可以创建具有其他名称空间代理的名称空间。 它以创建名为的命名空间的想法命名. 使用dev实用程序,可以从任何地方使用./foo语法访问它们,而无需任何操作。 ...
斜线命令行脚本,可从Reddit用户提交的内容中下载唯一的文件安装$ git clone https://github.com/2yr434hgd7fy384/u-slash$ pip install u-slash/用法u-slash [OPTIONS] [USERNAMES]... DIRECTORYu-slash下载任意...
npm i discord-slash-commands 特征 可客制化 多命令支持 每个行会命令支持 例子 const Discord = require ( 'discord.js' ) ; const client = new Discord . Client ( ) ; const { Slash } = require ( 'discord-...
连接-url-斜杠-消毒剂从你的快递网址中删除不必要的斜线的中间件安装 npm install connect-url-slash-sanitiser --save用法 var express = require('express');var urlSlashSanitiser = require('connect-url-slash-...
discord-py-slash-command是第一个为Discord Bot API库制作的公共斜杠命令处理程序库。 安装 您可以使用下面的给定PIP行轻松安装discord-py-slash-command库: pip install -U discord-py-slash-command 免责声明...
欢迎来到Discord Slash Bot :waving_hand: 该机器人是一个简单的Discord Slash Bot。 :house: 用法 克隆回购 使用命令npm install或yarn安装依赖项 将.env.example重命名为.env并填写所需的空白 通过此邀请将漫游...
hapi-trailing-slash# 一个插件,用于处理传入URL的常见尾随斜杠问题,以便my-route和my-route /具有一致的行为。安装npm install hapi-trailing-slash基本用途此插件将注册一个preResponse扩展名,该扩展名将在...
运行工作示例克隆示例,并使用以下版本在最新的Tomcat 8上运行: $ mvn clean package cargo:run 打开 笔记没有尾随/ 按登录按钮显示“ Hello”页面映射到/* 切换到slash-star分支,该分支将DispatcherServlet映射到...
【三斜线指令】在TypeScript中是一种特殊的注释方式,用于向编译器提供元数据和指令。这些指令通常位于文件的顶部,且仅在那儿有效。它们以`///`开头,后面跟着一个XML标签。 ### 1....这是最常用的三斜线指令,用于...
初级新手入门吉他谱 guitar tab
这里提到的项目"discord-slash-requests",是一个GitHub开源库,由windowsvistaiscool开发,用于帮助开发者在Python中轻松构建和管理Discord的Slash Commands。通过`git clone ...