题意:从*点开始,标记所有能走到的点,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-水题-搜索的更多相关文章

  1. UVa 1595 (水题) Symmetry

    颓废的一个下午,一直在切水题,(ˉ▽ ̄-) 首先如果这些点是对称的话,那么它们的对称轴就是x = m,m是横坐标的平均值. 把这些点放到一个集合里,然后扫描每个点,计算出它关于x = m的对称点,看这 ...

  2. UVa 10391 (水题 STL) Compound Words

    今天下午略感无聊啊,切点水题打发打发时间,=_=|| 把所有字符串插入到一个set中去,然后对于每个字符串S,枚举所有可能的拆分组合S = A + B,看看A和B是否都在set中,是的话说明S就是一个 ...

  3. UVa 10935 (水题) Throwing cards away I

    直接用STL里的queue模拟即可. #include <cstdio> #include <queue> using namespace std; ; int discard ...

  4. UVa 1593 (水题 STL) Alignment of Code

    话说STL的I/O流用的还真不多,就着这道题熟练一下. 用了两个新函数: cout << std::setw(width[j]);    这个是设置输出宽度的,但是默认是在右侧补充空格 所 ...

  5. UVa 400 (水题) Unix ls

    题意: 有n个文件名,排序后按列优先左对齐输出.设最长的文件名的长度为M,则最后一列长度为M,其他列长度为M+2. 分析: 这道题很简单,但要把代码写的精炼,还是要好好考虑一下的.lrj的代码中有两个 ...

  6. UVa 11040 (水题) Add bricks in the wall

    题意: 45块石头如图排列,每块石头上的数等于下面支撑它的两数之和,求其余未表示的数. 分析: 首先来计算最下面一行的数,A71 = A81 + A82 = A91 + 2A92 + A93,变形得到 ...

  7. Square Numbers UVA - 11461(水题)

    #include <iostream> #include <cstdio> #include <sstream> #include <cstring> ...

  8. UVa 489 HangmanJudge --- 水题

    UVa 489 题目大意:计算机给定一个单词让你猜,你猜一个字母,若单词中存在你猜测的字母,则会显示出来,否则算出错, 你最多只能出错7次(第6次错还能继续猜,第7次错就算你失败),另注意猜一个已经猜 ...

  9. UVa 1339 Ancient Cipher --- 水题

    UVa 1339 题目大意:给定两个长度相同且不超过100个字符的字符串,判断能否把其中一个字符串重排后,然后对26个字母一一做一个映射,使得两个字符串相同 解题思路:字母可以重排,那么次序便不重要, ...

  10. UVa 1225 Digit Counting --- 水题

    UVa 1225 题目大意:把前n(n<=10000)个整数顺次写在一起,12345678910111213...,数一数0-9各出现多少字 解题思路:用一个cnt数组记录0-9这10个数字出现 ...

随机推荐

  1. SYSTEM\sys\sys.c:33:7: error: expected '(' before 'void' __ASM void MSR_MSP(u32 addr)

    在STM32中的sys.c文件编译报出这个错误时: __ASM void MSR_MSP(u32 addr){ MSR MSP, r0 //set Main Stack value BX r14} 如 ...

  2. PDF软件推荐——Sumatra PDF - imsoft.cnblogs

    Sumatra PDF 优点:绿色,小巧,快速,支持格式丰富 缺点:不支持修改和添加标记 链接: http://pan.baidu.com/s/1eQ1s3Nc 密码: d8h6 主页:http:// ...

  3. Windows7系统中nginx与IIS服务器搭建集群实现负载均衡

    10分钟搭建服务器集群——Windows7系统中nginx与IIS服务器搭建集群实现负载均衡   分布式,集群,云计算机.大数据.负载均衡.高并发······当耳边响起这些词时,做为一个菜鸟程序猿无疑 ...

  4. python笔记-6(import导入、time/datetime/random/os/sys模块)

    一.了解模块导入的基本知识 此部分此处不展开细说import导入,仅写几个点目前的认知即可.其它内容待日后有深入理解了再来细说 1.import可以导入的两种不同的内容 1.1 *.py文件结尾的文件 ...

  5. C语言命令行解析函数:getopt/getopt_long

    命令行工具下的参数选项有两种,长选项和短选项.短选项以-开头,后面跟单个字母:长选项以--开头,后面可跟多个字母. 一. getopt() 1.功能:解析命令行短选项参数 2.函数原型: #inclu ...

  6. vertx.io 与nodejs 一个简单的性能比较

    vertx.io 与node 都是可以进行js运行的一个引擎,但是vertx 支持的语言相对于node 多,可以查看官网.今天下网上查询相关的信息 时来了解到vertx.io 性能比node 好,于是 ...

  7. Jsonpath的写法

      JSONPath - 是xpath在json的应用. xml最大的优点就有大量的工具可以分析,转换,和选择性的提取文档中的数据.XPath是这些最强大的工具之一. 如果可以使用xpath来解析js ...

  8. json包含单双引号问题解决方案

    解决方案:在后台处理 JSONArray.fromObject(list).toString() 转自明明如月小角落: 效果DEMO: JsonQuotesUtil.js /** * 解决json传输 ...

  9. wsdl详解

    <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:ns1="http:// ...

  10. SpringCloud初体验:七、gateway 网关服务如何做token验证

    说说背景:假如有一个用户服在用户登录后,生成一个token给到客户端,用户每次请求时都需要这个token,于是每次都会在网关 gateway 校验,校验通过后网关从token中解析出userId,然后 ...