POJ 1103 Maze

保姆级教程:手把手教你从ENSEMBL官网下载GRCh38/GRCh37的GTF注释文件(附网址规律总结) 本文提供从ENSEMBL官网下载GRCh38/GRCh37的GTF注释文件的详细教程,包括路径解析、版本号确定和下载命令示例。特别解析了GRCh37的特殊存储结构,并分享批量下载、文件校验等高级技巧,帮助生物信息学研究者高效获取基因组注释文件。 阅读详情

/*
 dfs判断环,建图需要技巧,图变成了三维的(h * w * 2)第三维的2用来表示一个格子被'/'或者'/'分
 成的两块

 核心就是判断环,但是由于这题特殊性使得判断环比较简单;利用分别遍历h * w * 2个点,遍历到的点
 设置为visited, 当遇到遍历初始点时且这个初始点不是前驱则表示找到一条环

 注意一定要判断是否是前驱,否则会产生判断错误
*/

#include <iostream>
#include <memory>
#define MAX_N 75
#define MAX_T 150
using namespace std;

bool visited[MAX_N + 5][MAX_N + 5][2];
char input[MAX_N + 5][MAX_N + 5];
int w, h, cyNum, lCy = INT_MIN;
int startH, startW, startP;

bool inRange(int curH, int curW)
{
    return (curH >= 1 && curH <= h && curW >= 1 && curW <= w);
}

void dfs(int preH, int preW, int preP, int curH, int curW, char type, int which, int length)
{
    //cout<<curH<<" "<<curW<<" "<<which<<endl;
   
    visited[curH][curW][which] = true;
    if(type == '//')
    {
        if(which == 0)
        {
            if(inRange(curH, curW - 1))
            {
                //visited[curH][curW - 1][1] = true;
                if(input[curH][curW - 1] == '//')
                {
                    if(!visited[curH][curW - 1][1])
                        dfs(curH, curW, which, curH, curW - 1, '//', 1, length + 1);
                    if(!(curH == preH && curW - 1 == preW && preP == 1) && curH == startH && curW - 1 == startW && startP == 1)
                    {
                        cyNum++;
                        if(length > lCy)
                            lCy = length;
                    }
                }
                else if(input[curH][curW - 1] == '/')
                {
                    if(!visited[curH][curW - 1][1])
                        dfs(curH, curW, which, curH, curW - 1, '/', 1, length + 1);
                    if(!(curH == preH && curW - 1 == preW && preP == 1) && curH == startH && curW - 1 == startW && startP == 1)
                    {
                        cyNum++;
                        if(length > lCy)
                            lCy = length;
                    }
                }
            }
            if(inRange(curH + 1, curW))
            {
                if(input[curH + 1][curW] == '//')
                {
                    if(!visited[curH + 1][curW][1])
                        dfs(curH, curW, which, curH + 1, curW, '//', 1, length + 1);
                    if(!(curH + 1 == preH && curW == preW && preP == 1) &&curH + 1 == startH && curW == startW && startP == 1)
                    {
                        cyNum++;
                        if(length > lCy)
                            lCy = length;
                    }
                }
                else if(input[curH + 1][curW] == '/')
                {
                    if(!visited[curH + 1][curW][0])
                        dfs(curH, curW, which, curH + 1, curW, '/', 0, length + 1);
                    if(!(curH + 1 == preH && curW == preW && preP == 0) && curH + 1 == startH && curW == startW && startP == 0)
                    {
                        cyNum++;
                        if(length > lCy)
                            lCy = length;
                    }
                }
            }
        }
        else if(which == 1)
        {
            if(inRange(curH, curW + 1))
            {
                //visited[curH][curW + 1][0] = true;
                if(input[curH][curW + 1] == '//' && !visited[curH][curW + 1][0])
                    dfs(curH, curW, which, curH, curW + 1, '//', 0, length + 1);
                else if(input[curH][curW + 1] == '/' && !visited[curH][curW + 1][0])
                    dfs(curH, curW, which, curH, curW + 1, '/', 0, length + 1);
                if(!(curH == preH && curW + 1 == preW && preP == 0) && curH == startH && curW + 1 == startW && startP == 0)
                {
                    cyNum++;
                    if(length > lCy)
                        lCy = length;
                }
            }
            if(inRange(curH - 1, curW))
            {
                if(input[curH - 1][curW] == '//')
                {
                    if(!visited[curH - 1][curW][0])
                        dfs(curH, curW, which, curH - 1, curW, '//', 0, length + 1);
                    if(!(curH - 1 == preH && curW == preW && preP == 0) && curH - 1 == startH && curW == startW && startP == 0)
                    {
                        cyNum++;
                        if(length > lCy)
                            lCy = length;
                    }
                }
                else if(input[curH - 1][curW] == '/')
                {
                    if(!visited[curH - 1][curW][1])
                        dfs(curH, curW, which, curH - 1, curW, '/', 1, length + 1);
                    if(!(curH - 1 == preH && curW == preW && preP == 1) && curH - 1 == startH && curW == startW && startP == 1)
                    {
                        cyNum++;
                        if(length > lCy)
                            lCy = length;
                    }
                }
            }
        }
    }
    else if(type == '/')
    {
        if(which == 0)
        {
            if(inRange(curH, curW - 1))
            {
                if(input[curH][curW - 1] == '//' && !visited[curH][curW - 1][1])
                    dfs(curH, curW, which, curH, curW - 1, '//', 1, length + 1);
                else if(input[curH][curW - 1] == '/' && !visited[curH][curW - 1][1])
                    dfs(curH, curW, which, curH, curW - 1, '/', 1, length + 1);
                if(!(curH == preH && curW - 1 == preW && preP == 1) && curH == startH && curW - 1 == startW && startP == 1)
                {
                    cyNum++;
                    if(length > lCy)
                        lCy = length;
                }
            }
            if(inRange(curH - 1, curW))
            {
                if(input[curH - 1][curW] == '//')
                {
                    if(!visited[curH - 1][curW][0])
                        dfs(curH, curW, which, curH - 1, curW, '//', 0, length + 1);
                    if(!(curH - 1 == preH && curW == preW && preP == 0) && curH - 1 == startH && curW == startW && startP == 0)
                    {
                        cyNum++;
                        if(length > lCy)
                            lCy = length;
                    }
                }
                else if(input[curH - 1][curW] == '/')
                {
                    if(!visited[curH - 1][curW][1])
                        dfs(curH, curW, which, curH - 1, curW, '/', 1, length + 1);
                    if(!(curH - 1 == preH && curW == preW && preP == 1) && curH - 1 == startH && curW == startW && startP == 1)
                    {
                        cyNum++;
                        if(length > lCy)
                            lCy = length;
                    }
                }
            }
        }
        else if(which == 1)
        {
            if(inRange(curH, curW + 1))
            {
                if(input[curH][curW + 1] == '//' && !visited[curH][curW + 1][0])
                    dfs(curH, curW, which, curH, curW + 1, '//', 0, length + 1);
                else if(input[curH][curW + 1] == '/' && !visited[curH][curW + 1][0])
                    dfs(curH, curW, which, curH, curW + 1, '/', 0, length + 1);
                if(!(curH == preH && curW + 1 == preW && preP == 0) && curH == startH && curW + 1 == startW && startP == 0)
                {
                    cyNum++;
                    if(length > lCy)
                        lCy = length;
                }
            }
            if(inRange(curH + 1, curW))
            {
                if(input[curH + 1][curW] == '//')
                {
                    if(!visited[curH + 1][curW][1])
                        dfs(curH, curW, which, curH + 1, curW, '//', 1, length + 1);
                    if(!(curH + 1 == preH && curW == preW && preP == 1) && curH + 1 == startH && curW == startW && startP == 1)
                    {
                        cyNum++;
                        if(length > lCy)
                            lCy = length;
                    }
                }
                else if(input[curH + 1][curW] == '/')
                {
                    if(!visited[curH + 1][curW][0])
                        dfs(curH, curW, which, curH + 1, curW, '/', 0, length + 1);
                    if(!(curH + 1 == preH && curW == preW && preP == 0) && curH + 1 == startH && curW == startW && startP == 0)
                    {
                        cyNum++;
                        if(length > lCy)
                            lCy = length;
                    }
                }
            }
        }
    }
}

int main()
{
    int i, j, seq = 0;
    while(cin>>w>>h && !(w == 0 && h == 0))
    {
        seq++;
        getchar();
        for(i = 1; i <= h; i++)
        {
            for(j = 1; j <= w; j++)
                input[i][j] = getchar();
            getchar();
        }
        memset(visited, 0, sizeof(visited));
        cyNum = 0;
        lCy = INT_MIN;
        for(i = 1; i <= h; i++)
        {
            for(j = 1; j <= w; j++)
            {
                for(int k = 0; k < 2; k++)
                {
                    if(i == 1 && j == 3 && k == 1)
                    {
                        int a = 2;
                    }
                    startH = i, startW = j, startP = k;
                    if(!visited[i][j][k])
                        dfs(-1, -1, -1, i, j, input[i][j], k, 1);
                }
            }
        }
        cout<<"Maze #"<<seq<<":"<<endl;
        if(cyNum != 0)
            cout<<cyNum<<" Cycles; the longest has length "<<lCy<<"."<<endl;
        else
            cout<<"There are no cycles."<<endl;
        cout<<endl;
    }
    return 0;
}

关于React Native Android找不到node的错误 最近,按照官方文档初始化了一个React Native项目,但是在Android端运行的时候,报了如下的一个错误。 org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:recordFilesBeforeBundleCommandDebug'. Caused by: org.gradle.process.internal.ExecException: A problem occurred starting p 阅读详情

相关推荐

Mac安装Weblogic教程

1.Weblogic的下载 这次安装的是最新版本12 官网下载地址: http://www.oracle.com/technetwork/middleware/weblogic/downloads/index.html 下载需要登录账号,如没有账号要注册一个 下载后的文件如下图,其中fmw_12.2.1.3.0_wls_quick.jar文件就是安装包了,注意现在不要对它进行解压 2.安装前的确...

weixin_40102675的博客 5063

poj 1103 & zoj 1142 Maze (图形模拟+简单搜索)

Maze Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 1138   Accepted: 451 Description By filling a rectangle with slashes (/) and backslashes (\), you can ge

To be what you what to be! 1849

山东专升本计算机网络基础知识点 --- 计算机网络基础

计算机网络是指将一群具有独立\textcolor{WildStrawberry}{独立}独立功能的计算机通过通信设备及传输媒体等互联起来,在通信软件的支持下,实现计算机间资源共享、信息交换或协同工作\textcolor{WildStrawberry}{资源共享、信息交换或协同工作}资源共享、信息交换或协同工作的系统。计算机网络是计算机技术和通信技术紧密结合的产物\textcolor{WildStrawberry}{计算机网络是计算机技术和通信技术紧密结合的产物}

z339521的博客 2814

poj 1103 maze源代码

#include using namespace std;int const MAXN=76;struct node{    int prex,prey,preid;};node pre[MAXN][MAXN][2];char map[MAXN][MAXN];int visited[MAXN][MAXN][2];int w,h;int length;int path[MAXN][MAXN]

michael200892458的专栏 1051

IoT 平台架构全景图:从设备到 AI 的完整技术体系深度解析

随着物联网设备规模进入百万级时代,IoT 平台架构已经从简单的设备接入系统演变为完整的数据平台。本文从系统架构师视角,深度解析 IoT 平台的完整技术体系,包括设备接入、MQTT 通信、消息流平台、数据平台与 AI 决策系统,并结合主流云平台实践,构建从设备到 AI 的完整 AIoT 架构认知。

moton2017的博客 856

✨使用 vLLM + Docker 部署 Qwen3-Embedding-8B 并实现高效文本向量生成(附 `curl` 测试)

本文介绍了如何使用 vLLM 和 Docker 部署 Qwen3-Embedding-8B 嵌入模型服务,并通过标准 OpenAI 兼容接口进行调用和结果解析。如果你在部署中遇到任何问题,欢迎留言讨论!

用大模型重构生活:猫奴程序员的AI智能日常记录 6238

POJ 1103 Maze UVA 705 ShellSort 迷宫建图

题意:给一个由\/字符组成的迷宫,问由这个迷宫形成的图有多少个闭合回路,并且输出最长一条有多长 理解:首先就从它给的样例那个图中,就可以看出来每条斜线代表了2个格子,然后闭合回路中最大长度就是闭合回路中格子的格子的个数。 那么,输入这个图之后对每个坐标乘2进行放大建图就行了。 然后就是暴力跑dfs,跑一个图,暴力标记计数就行,然后需要判断下终点是否和起点相邻,然后判断

swust_fang 1044

手把手教你用vivado2018.3为复旦微JFMQL15T打IP补丁(含环境变量配置技巧)

本文详细介绍了在Vivado 2018.3环境中为复旦微JFMQL15T开发板打IP补丁的全流程,包括环境变量配置、IP缓存管理等关键步骤。通过实战验证的解决方案,帮助工程师快速搭建开发环境,解决国产芯片开发中的常见问题,提升开发效率。

weixin_30374009的博客 725

分支限界法

#include <iostream> #include <cstdio> #include <queue> #include <cstring> using namespace std; struct Node { int n, count; }; int n, k;//农夫位置,牛位置 int bfs() { queue...

xiaozhou163的博客 261

Nginx健康检查实战:如何用第三方模块提升服务可用性(附详细配置)

本文深入探讨了如何通过集成第三方健康检查模块来提升Nginx的服务可用性。文章对比了Nginx默认被动检查的局限性,并详细介绍了主动健康检查的核心优势、主流模块选型,以及以nginx_upstream_check_module为例的实战部署与配置指南,帮助运维人员构建更可靠的负载均衡架构。

weixin_28331555的博客 307

在 CentOS7 下安装 Cadence IC验证平台 INCISIVE152

前言 本文所使用的软件 虚拟机软件:VMware Workstation 15 PRO 如何安装? 操作系统:CentOS-7, CentOS-7-x86_64-DVD-1810.iso 如何安装? 简介 INCISIVE Incisive是nc_verilog, nc_sim, nc_lauch,以及ABV,TBV的集合,用于仿真和验证。 InstallScape InstallSc...

沈醉不知的博客 2万+

POJ 1103 Maze 笔记

如图。给出迷宫,判断能否形成圆,长度是多少。

woniupengpeng的专栏 927

手把手教你学simulink(95.1)--PID控制实例:基于Simulink的PID控制温度控制系统建模与仿真

温度控制是工业自动化、家用电器、医疗设备以及航空航天等领域中常见的控制问题。通过精确的温度控制,可以提高生产效率、降低能耗并确保产品质量。PID(比例-积分-微分)控制器因其结构简单、性能稳定且易于实现而被广泛应用于各种温度控制系统。本项目旨在通过MATLAB/Simulink平台设计和验证一个基于PID控制的温度控制系统,重点研究PID参数调优方法、系统动态响应特性以及稳态误差消除能力。

MHD0815的博客 792

POJ题目分类-完整版

1000        A+B Problem        送分题 1001        Exponentiation        高精度 1003        Hangover        送分题 1004        Financial Management        送分题 1005        I Think I Need a Houseboat        几

ecjtu_acm_菜鸟—鱼尾尾 1772

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

【转】POJ百道水题列表

以下是poj百道水题,新手可以考虑从这里刷起 搜索1002 Fire Net1004 Anagrams by Stack1005 Jugs1008 Gnome Tetravex1091 Knight Moves1101 Gamblers1204 Additive equations1221 Risk1230 Legendary Pokemon1249 Pushing Boxes1364 Ma...

weixin_30260399的博客 406

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

POJ百道水题列表

以下是poj百道水题,新手可以考虑从这里刷起 搜索1002 Fire Net1004 Anagrams by Stack1005 Jugs1008 Gnome Tetravex1091 Knight Moves1101 Gamblers1204 Additive equations1221 Risk1230 Legendary Pokemon1249 Pushing Boxes13...

weixin_30478619的博客 397

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

POJ题型分析

转载说明:这种分类标记了每道题的难度和所属类型,根据自己的实际情况选做吧,坚持就会有提高! 1000 A+B Problem 送分题 1001 Exponentiation 高精度1003 Hangover 送分题1004 Financial Management 送分题1005 I Think I Need a Houseboat 几何1006 Biorhythms 送分题1007 DN...

daibalusu 981

7月解题日志B

July_18 POJ3649 模拟题。 这个题加深了我对于模拟题的理解。 关键在于读懂题意,思路清晰。 这个题目的关键在于理解题,然后计算移动:先计算每个图形的最左最右位置,再把每一格把所有的图形按规则计算向左移动的格数,然后再根据移动的最左坐标建立新图像,最后根据规则去掉不输出的前导后续空白输出,一直在做算术。July_2

KidTech 1845

ACM刷题路线

转发自(https://blog.youkuaiyun.com/Aibiabcheng/article/details/76597297) 本帖题目类型: 1)递归与分治 2)动态规划 3)贪心算法 4)回溯算法 5)图的搜索算法 6)图论 7)数论 8)组合数学 9)分...

越看越喜欢啊 7464

[转]hdu题目分类

鉴于poj挂了,boj 也挂了,于是去hdu搜了一下,找了个题目分类。 原文地址:http://apps.hi.baidu.com/share/detail/17053154 1001 整数求和 水题1002 C语言实验题——两个数比较 水题1003 1、2、3、4、5... 简单题1004 渊子赛马 排序+贪心的方法归并1005 Hero In Maze 广度搜索1006 Redraimen...

weixin_30244889的博客 251

Codeforces 1103 简要题解

传送门 又一场原地爆炸的比赛。 AAA题简单思维 题意:给一个4∗44*44∗4的格子图和一个01串,你要根据01串放1∗21*21∗2的木块,如果是0就竖放一个,是1就横放一个,一行或者一列满了可以直接消掉。 现在让你每次输出放下木块的坐标,并保证所有操作中没有木块相交。 思路: 可以直接按照自己的思路模拟然后我这个sb想了好久用什么策略 下来之后突然想到一个更简单的做法,我们保证如果竖放先放...

苟为蒟蒻又何妨 1075

ZOJ 1103(POJ 2415)(HDU 1252)Hike…

Hike on a Graph Time Limit: 2 Seconds      Memory Limit: 65536 KB "Hike on a Graph" is a game that is played on a board on which an undirected graph is drawn. The graph is complete and has all loops

算法之道 703

bzoj1103

其实这道题和以前在poj上做过的将树映射到树状数组的题目很像 首先不难想到,将一条边从土路修成公路,只对以这条边连接的孩子结点为根的子树有影响; 于是和之前那道poj的题目很像,后序遍历树,对每个节点重标号,每个点初始值就是深度 下面的问题就变成了: 土路修成公路---->区间修改 查询从点1到某个点所经过的土路数----->单点求值; 这种问题我们其实可以用树状数组来做;...

weixin_33875564的博客 127

POJ3984 Maze 迷宫问题(BFS)

本题中所有输入均为5*5 (其实只有一组输入orz) 就是常规的迷宫问题,不过需要涉及指针问题来回溯遍历路径 如果用string存不太好 sample input 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0 sample output (0, 0) (1, 0) (2, 0) (2, 1) (2, 2) (2, 3) (2, 4) (3, 4) (4, 4) 代码 #include <stdio.h> #include <iost.

Lewis的博客 379

GOOGLE的一道笔试题—求给定连通无环无向图可以生成的最小高度树

/*最近看到一道谷歌笔试题,“已知一颗无向无环连通图T的所有顶点和边的信息,现需要将其转换为一棵树,要求树的深度最小,请设计一个算法找到所有满足要求的树的根结点,并分析时空复杂度(描述算法即可,无需代码)”其实就是给定一个无向连通图,求以哪些顶点为根可以得到深度最小的树,思路比较简单,主要有两个步骤:(1)首先选取1号结点作为树根,进行一遍DFS,在DFS时计算每个节点

bobten2008的专栏 3707

POJ 1143 Number Game

/*http://acm.pku.edu.cn/JudgeOnline/problem?id=1143 博弈论(DFS + 状态记忆表 + 位运算), 假定一个走的人是A,第二个走的人是B A在当前状态下一定能够取胜的条件是:当前状态下存在一个数字,对于当A取走 这个数字后的状态,B不管怎么取都得输(即B不能够绝对取胜)  有了上面的分析就很容易看出这是一道博弈题,最终会形

bobten2008的专栏 2922
上一篇: POJ 1101 The Game
下一篇: POJ 1102 LC DISPLAY
bobten2008
博客等级 码龄18年 153粉丝 157原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值