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;
}
uva-784-水题-搜索的更多相关文章
- UVa 1595 (水题) Symmetry
颓废的一个下午,一直在切水题,(ˉ▽ ̄-) 首先如果这些点是对称的话,那么它们的对称轴就是x = m,m是横坐标的平均值. 把这些点放到一个集合里,然后扫描每个点,计算出它关于x = m的对称点,看这 ...
- UVa 10391 (水题 STL) Compound Words
今天下午略感无聊啊,切点水题打发打发时间,=_=|| 把所有字符串插入到一个set中去,然后对于每个字符串S,枚举所有可能的拆分组合S = A + B,看看A和B是否都在set中,是的话说明S就是一个 ...
- UVa 10935 (水题) Throwing cards away I
直接用STL里的queue模拟即可. #include <cstdio> #include <queue> using namespace std; ; int discard ...
- UVa 1593 (水题 STL) Alignment of Code
话说STL的I/O流用的还真不多,就着这道题熟练一下. 用了两个新函数: cout << std::setw(width[j]); 这个是设置输出宽度的,但是默认是在右侧补充空格 所 ...
- UVa 400 (水题) Unix ls
题意: 有n个文件名,排序后按列优先左对齐输出.设最长的文件名的长度为M,则最后一列长度为M,其他列长度为M+2. 分析: 这道题很简单,但要把代码写的精炼,还是要好好考虑一下的.lrj的代码中有两个 ...
- UVa 11040 (水题) Add bricks in the wall
题意: 45块石头如图排列,每块石头上的数等于下面支撑它的两数之和,求其余未表示的数. 分析: 首先来计算最下面一行的数,A71 = A81 + A82 = A91 + 2A92 + A93,变形得到 ...
- Square Numbers UVA - 11461(水题)
#include <iostream> #include <cstdio> #include <sstream> #include <cstring> ...
- UVa 489 HangmanJudge --- 水题
UVa 489 题目大意:计算机给定一个单词让你猜,你猜一个字母,若单词中存在你猜测的字母,则会显示出来,否则算出错, 你最多只能出错7次(第6次错还能继续猜,第7次错就算你失败),另注意猜一个已经猜 ...
- UVa 1339 Ancient Cipher --- 水题
UVa 1339 题目大意:给定两个长度相同且不超过100个字符的字符串,判断能否把其中一个字符串重排后,然后对26个字母一一做一个映射,使得两个字符串相同 解题思路:字母可以重排,那么次序便不重要, ...
- UVa 1225 Digit Counting --- 水题
UVa 1225 题目大意:把前n(n<=10000)个整数顺次写在一起,12345678910111213...,数一数0-9各出现多少字 解题思路:用一个cnt数组记录0-9这10个数字出现 ...
随机推荐
- 查找单链表的倒数第k个值
刚开始,我想到的是一种笨方法,先遍历单链表,计算出单链表的长度len,然后再从头遍历单链表到第len-k个节点,那么 这个节点既是单链表的倒数第k个节点. 不过这种算法时间复杂度挺高的,还有一种更简单 ...
- 《DSP using MATLAB》Problem 3.18
代码: %% ------------------------------------------------------------------------ %% Output Info about ...
- 转 JavaScript中判断对象类型的种种方法
我们知道,JavaScript中检测对象类型的运算符有:typeof.instanceof,还有对象的constructor属性: 1) typeof 运算符 typeof 是一元运算符,返回结果是一 ...
- maven学习--进阶篇
2016-01-06 02:34:24 继承与聚合 (八)maven移植 讲到maven移植,大家可能第一反应就是是指将一个java项目部署到不同的环境中去,实际上,在maven中,它认为当你参加一个 ...
- js ui框架 My97日期控件 富文本编辑器
My97日期控件 http://www.my97.net/dp/index.asp 富文本编辑器 http://www.kindsoft.net/demo.php 百度的magic也不错 http:/ ...
- FastAdmin 将会员模块升级为基础模块的升级指导
说明 FastAdmin 于 2018-01-19 将会员模块升级为基础模块. 因为有数据库改动,所以需要对旧的数据库进行升级,不然没有办法使用和显示. 升级流程 git 合并代码 略 导入数据表 D ...
- Maven的dependency scope属性
官方地址:https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependen ...
- Microsoft Dynamics CRM 4.0 JScript 通用公共方法
1.基本参数 var CRM_FORM_TYPE_CREATE = 1; var CRM_FORM_TYPE_UPDATE = 2; var CRM_FORM_TYPE_READ_ONLY = 3; ...
- JZ2440 裸机驱动 第13章 LCD控制器(2)
13.2 TFT LCD显示实例 13.2.1 程序设计 本实例的目的是从串口输出一个菜单,从中选择各种方法进行测试,比如画线. 画圆.显示单色.使用调色板等. 13.2.2代码详解 ...
- python下爬某个网页的图片
#coding=utf-8 import re import urllib def getHtml(url): #获取url对应得源码 page = urllib.urlopen(url) html ...