• uva-784-水题-搜索


    题意:从*点开始,标记所有能走到的点,X代表墙,下划线原样输出

    AC:40ms

    #include<stdio.h>
    #include<iostream>
    #include<queue>
    #include<memory.h>
    using namespace std;
    struct DIR
    {
    	int r;
    	int c;
    } dir[] = { { -1, 0 }, { 1, 0 }, { 0, -1 }, { 0, 1 } };
    const int MAXR = 31;
    const int MAXC = 81;
    void bfs(queue<DIR> q, int maps[][MAXC])
    {
    	DIR d;
    	while (!q.empty())
    	{
    		d = q.front();
    		q.pop();
    		int nr, nc;
    		for(int i = 0; i < 4; i++)
    		{
    			nr = d.r + dir[i].r;
    			nc = d.c + dir[i].c;
    			if(maps[nr][nc] != 1)
    				continue;
    			maps[nr][nc] = 2;
    			DIR dd;
    			dd.r = nr;
    			dd.c = nc;
    			q.push(dd);
    		}
    	}
    
    }
    int main()
    {
    	freopen("d:\1.txt", "r", stdin);
    	int n;
    	cin >> n;
    	getchar();
    	while (n--)
    	{
    		int r = 0, c = 0;
    		char cc;
    		int maps[MAXR][MAXC];
    		int sr, sc;
    		memset(maps, 0, sizeof(maps));
    		string str;
    		//getline(cin, str);
    		while (getline(cin, str))
    		{
    			if(str.at(0) == '_')
    				break;
    			int length = str.length();
    			if(length > c)
    				c = length;
    			for(int i = 0; i < length; i++)
    			{
    				cc = str.at(i);
    				if(cc == ' ' || cc == '*')
    				{
    					maps[r][i] = 1;
    				}
    				if(cc == '*')
    				{
    					sr = r;
    					sc = i;
    				}
    				if(cc == 'X')
    				{
    					maps[r][i] = -1;
    				}
    			}
    			r++;
    		}
    		DIR d;
    		d.r = sr;
    		d.c = sc;
    		queue<DIR> q;
    		q.push(d);
    		bfs(q, maps);
    		for(int i = 0; i < r; i++)
    		{
    			for(int j = 0; j < c; j++)
    			{
    				if(maps[i][j] == 0)
    					break;
    				if(maps[i][j] == -1)
    					cout << 'X';
    				if(maps[i][j] == 2)
    					cout << '#';
    				if(maps[i][j] == 1)
    					cout << ' ';
    			}
    			cout << endl;
    		}
    		cout << str << endl;
    	}
    	return 0;
    }
    

      

  • 相关阅读:
    Android 一个app启动另一个app
    Android 电池电量进度条,上下滚动图片的进度条(battery)
    Android 返回键双击退出程序
    Failed to load or instantiate
    GNUstep 快捷键编译
    Android 文件夹命名规范 国际化资源
    mac 安装protobuf,并编译为java,c++,python
    Android 贝塞尔曲线 折线图
    android 制作自定义标题栏
    Gson
  • 原文地址:https://www.cnblogs.com/shuiyonglewodezzzzz/p/6920099.html
Copyright © 2020-2023  润新知