zoukankan      html  css  js  c++  java
  • 第六届华为创新杯编程大赛-进阶1第3轮

    题目忘记粘贴了,题目大致意思就是笨笨熊要搬家。它如今的家在B点,新的豪宅在H点。如今要从B点到H点

    地图R表示行,C表示列。当中:

    -表示能通过

    #表示不能通过

    B表示笨笨熊原来的家

    H表示笨笨熊的新豪宅

    输入

    R

    C

    R×C矩阵

    输出

    Y//表示能够通过

    N//表示不能够通过

    解析:本来这道题非常明显。非常easy的搜索嘛,可是不知道是由于自己非常长时间不写搜索了还是怎么回事,一直在改代码,最后在超过时间给提交上去了,可是最后居然还返回分数了,完美AC哈。

    直接贴个代码

    #include <iostream>
    using std::endl;
    using std::cin;
    using std::cout;
    char map[100][100];
    bool flag=false;
    int R,C;
    void dfs(int p,int q)
    {
    	if(p>=0&&p<R&&q>=0&&q<C&&map[p][q]=='H')
    	{
    		flag = true;
    		return;
    	}
    	if(map[p-1][q]=='-'||map[p-1][q]=='H')
    	{
    		if(map[p-1][q]=='-')
    			map[p-1][q]='a';
    		dfs(p-1,q);
    	}
    	if(map[p+1][q]=='-'||map[p+1][q]=='H')
    	{
    		if(map[p+1][q]=='-')
    			map[p+1][q]='a';
    		dfs(p+1,q);
    	}
    	if(map[p][q-1]=='-'||map[p][q-1]=='H')
    	{
    		if(map[p][q-1]=='-')
    			map[p][q-1]='a';
    		dfs(p,q-1);
    	}
    	if(map[p][q+1]=='-'||map[p][q+1]=='H')
    	{
    		if(map[p][q+1]=='-')
    			map[p][q+1]='a';
    		dfs(p,q+1);
    	}
    }
    int main()
    {
    	cin >> R >> C;
    	int tempi,tempj;
    	for(int i=0;i<R;++i)
    		for(int j=0;j<C;++j)
    		{
    			cin >> map[i][j];
    			if(map[i][j]=='B')
    			{
    				tempi = i;
    				tempj = j;
    			}
    		}
    	dfs(tempi,tempj);
    	if(flag==true)
    		cout << "Y" << endl;
    	else
    		cout << "N" << endl;
    	return 0;
    }

  • 相关阅读:
    leetcode643.滑动窗口例题
    BZOJ4195 离散化+并查集
    luogu线性表刷题
    2021-5-29 周报博客
    2021-5-28 日报博客
    2021-5-27 日报博客
    2021-5-26 日报博客
    2021-5-25 日报博客
    2021-5-24 日报博客
    梦断代码阅读笔记之二
  • 原文地址:https://www.cnblogs.com/brucemengbm/p/6892578.html
Copyright © 2011-2022 走看看