CodeForces - 586D Phillip and Trains
2024-09-30 11:04:32
这道题是一道搜索题
但是 如果没有读懂或者 或者拐过弯 就很麻烦
最多26个火车 那么每一个周期 (人走一次 车走一次) 就要更改地图 的状态 而且操作复杂 容易超时 出错
利用相对运动
计周期为 人向上或向下或不动一步 + 向右三步
这样就变为走迷宫问题了
同样要注意
1、去重数组 或者 将以前访问过的点置为其他符号 避免重复访问
2、还有 因为 每次是三步三步的往右走 所以最后的边界可能不够 可以再扩充三列
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <queue> using namespace std; typedef pair<int, int> P; int T,t;
//bool vis[3][104];
char maze[][];
P start; bool check(int x ,int y)
{
if (x > || x < ) return false;
if (maze[x][y] != '.') return false;
return true;
}
bool bfs()
{
queue<P> que;
P crt = start;
crt.second++;
if (crt.second >= t) return true;
if (maze[crt.first][crt.second] == '.') que.push(crt);
while (!que.empty())
{
P crt = que.front();
que.pop();
for (int i = -; i < ; i++)
{
int tx = crt.first + i, ty = crt.second;
if ( !check(tx, ty) ) continue;
bool isSafe = true;
for (int j = ; j <= ; j++)
{
if (!check(tx, ty+j))
{
isSafe = false;
break;
}
}
if (isSafe)
{
if (ty+ >= t) return true;
else
que.push(P(tx, ty+));
}
}
maze[crt.first][crt.second] = 'A';//使用去重数组的话 内存超了 当访问完这个点以后 做标记 以后不再访问
}
return false;
}
int main()
{
freopen("in.txt", "r", stdin);
scanf("%d", &T);
int k;
while (T--)
{
scanf("%d%d", &t, &k);
//memset(vis, false, sizeof(vis));
for (int i = ; i < ; i++)
{
getchar();
for (int j = ; j < t; j++)
{
scanf("%c", &maze[i][j]);
if (maze[i][j] == 's')
{
start.first = i;
start.second = j;
}
}
for (int j = t; j < t+; j++)
{
maze[i][j] = '.';
}
}
if(bfs()) printf("YES\n");
else printf("NO\n");
}
return ;
}
最新文章
- 判断安卓和IOS
- zend studio常用快捷键
- C# Albert工程阅读关键字解析
- Jersey Rest服务类型
- Android监听WIFI网络的变化并且获得当前信号强度
- jfinal不能正确加载html网页,总是报错的解决方法
- Knockout绑定audio的pause事件导致音频无法停止
- Unity判断网络连接类型
- Model绑定
- mysql链接表,connection string, federated engine
- SQL语句 (一)
- Click One客户端安装后将安装目录删除,再从服务器下载安装无法安装解决办法
- java开发JDBC连接数据库代码
- instruments symbol name 不显示函数名!
- Unity中的粒子特效的 RendererQ 排序
- 虚拟主机ip配置,nginx.conf文件配置及日志文件切割
- Android性能优化系列之apk瘦身
- MongoDB(课时4 数据增加)
- [转]链接中 href=&#39;#&#39; 和 href=&#39;###&#39; 的区别以及优缺点
- 20155239 2016-2017-2 《Java程序设计》第7周学习总结
热门文章
- gulp插件之gulp-mock-server
- 序列化shelve模块
- SQLServer &#183; 最佳实践 &#183; SQL Server 2012 使用OFFSET分页遇到的问题
- Node.js Addons翻译(C/C++扩展)
- 解决Homestead yarn , npm run dev, 命令报错问题!
- Python3简明教程(二)—— 变量和数据类型
- example - 在这里插入一句话的简介
- 总结vue2.0 配置的实例方法
- Zend Studio 修改“代码字体和大小”
- Eclipse Code Recommenders 自动补全(联想)神器