Kattis - glitchbot 【DFS】
Kattis - glitchbot 【DFS】
题意
有一个机器人 刚开始在(0, 0),然后给出一个目标点,并且会给出一系列指令,但是其中会有一个指令是错误的。我们需要找出那个指令,并且改成正确的。
思路
因为数据范围比较小,我们可以把每条指令都改一下 暴力搜索一下,能不能走到目标点,如果改了,可以 那么 这就是答案 直接输出 break 掉就可以了
AC代码
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <deque>
#include <vector>
#include <queue>
#include <string>
#include <cstring>
#include <map>
#include <stack>
#include <set>
#include <cstdlib>
#include <ctype.h>
#include <numeric>
#include <sstream>
using namespace std;
typedef long long LL;
const double PI = 3.14159265358979323846264338327;
const double E = 2.718281828459;
const double eps = 1e-6;
const int MAXN = 0x3f3f3f3f;
const int MINN = 0xc0c0c0c0;
const int maxn = 1e5 + 5;
const int MOD = 1e9 + 7;
int vis[55];
int n, m, t;
map <string, int> M;
int Move[4][2] =
{
0, 1, //上 0
0,-1, //下 1
-1, 0, //左 2
1, 0, //右 3
};
int dis, ans;
void change(int cur)
{
if (dis == 0)
dis += vis[cur];
else if (dis == 1)
{
if (vis[cur] == 2)
dis += 2;
else
dis += 1;
}
else if (dis == 2)
{
if (vis[cur] == 2)
dis = 1;
else
dis = 0;
}
else if(dis == 3)
{
if (vis[cur] == 2)
dis = 0;
else
dis = 1;
}
}
void dfs(int x, int y, int cur)
{
if (x == n && y == m && cur == t)
{
ans = 1;
return;
}
else if(cur == t)
return;
else
{
if (vis[cur] == 1)
dfs(x + Move[dis][0], y + Move[dis][1], cur + 1);
else
{
change(cur);
dfs(x, y, cur + 1);
}
}
}
int main()
{
M["Forward"] = 1;
M["Left"] = 2;
M["Right"] = 3;
scanf("%d%d%d", &n, &m, &t);
memset(vis, 0, sizeof(vis));
int i, j;
string s;
for (i = 0; i < t; i++)
{
cin >> s;
vis[i] = M[s];
}
for (i = 0; i < t; i++)
{
int temp = vis[i];
int flag = 0;
for (j = 1; j <= 3; j++)
{
vis[i] = j;
ans = 0;
dis = 0;
dfs(0, 0, 0);
if (ans && j != temp)
{
flag = 1;
break;
}
}
if (flag)
{
printf("%d ", i + 1);
if (j == 1)
cout << "Forward\n";
else if (j == 2)
cout << "Left\n";
else
cout << "Right\n";
break;
}
else
vis[i] = temp;
}
}
Kattis - glitchbot 【DFS】的更多相关文章
- 【第40套模拟题】【noip2011_mayan】解题报告【map】【数论】【dfs】
目录:1.潜伏者 [map] 2.Hankson的趣味题[数论]3.mayan游戏[dfs] 题目: 1. 潜伏者(spy.pas/c/cpp)[问题描述]R 国和S 国正陷入战火之中,双方都互派间谍 ...
- Kattis - virus【字符串】
Kattis - virus[字符串] 题意 有一个正常的DNA序列,然后被病毒破坏.病毒可以植入一段DNA序列,这段插入DNA序列是可以删除正常DNA序列中的一个连续片段的. 简单来说就是,给你一段 ...
- Kattis - honey【DP】
Kattis - honey[DP] 题意 有一只蜜蜂,在它的蜂房当中,蜂房是正六边形的,然后它要出去,但是它只能走N步,第N步的时候要回到起点,给出N, 求方案总数 思路 用DP 因为N == 14 ...
- Kattis - fence2【二分法】
Kattis - fence2[二分法] 题意 有一个农夫需要建造一个 N - 1 米长的篱笆,需要 N 根柱子,然后有 K 根 柱子 需要将这 K 根柱子 切成 N 段 然后 要尽量保证这 N 段柱 ...
- Kattis - cokolada【水】
Kattis - cokolada[水] 题意 有一个人想吃巧克力,但是巧克力都是按照 2 的幂次的数量包装的,然后他想吃一定数量块的巧克力,然后可以敲碎,每次敲碎都分成两半,比如四块装的分成两块就是 ...
- Kattis - amsterdamdistance【数学】
Kattis - amsterdamdistance[数学] 题意 给出两个点 算出从第一个点到第二个点的最短距离,只不过这里不是直角坐标系, 是雷达图 思路 因为内圈的圆的路径要比外圈的小,所以我们 ...
- HDU 6113 度度熊的01世界 【DFS】(2017"百度之星"程序设计大赛 - 初赛(A))
度度熊的01世界 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- 【dfs】P1331 海战
题目描述 在峰会期间,武装部队得处于高度戒备.警察将监视每一条大街,军队将保卫建筑物,领空将布满了F-2003飞机.此外,巡洋船只和舰队将被派去保护海岸线.不幸的是因为种种原因,国防海军部仅有很少的几 ...
- 【dfs】p1731 生日蛋糕
1441:[例题2]生日蛋搞 [题目描述] 7月17日是Mr.W的生日,ACM-THU为此要制作一个体积为Nπ的M层生日蛋糕,每层都是一个圆柱体.设从下往上数第i(1≤i≤M)层蛋糕是半径为Ri, 高 ...
随机推荐
- tuning 03 Sizing the Share pool
share pool : (组成) library cache: stores shared sql and pl/sql code (包含 statement text, parsed code, ...
- 上下居中css
.css{ position: relative, top: 50%, transform: translateY(-50%) }
- 你很熟悉CSS,却没掌握这些CSS技巧
转载来自 http://www.html5cn.org/article-9294-1.html 做前端开发的人都很熟悉CSS,一个漂亮的网页由HTML标签和控制这些标签布局的CSS组成,因此CSS在开 ...
- 一站式WPF--依赖属性(DependencyProperty)二
书接上文,前篇文章介绍了依赖属性的原理和实现了一个简单的DependencyProperty(DP),这篇文章主要探讨一下如何使用DP以及有哪些需要注意的地方. 回顾 依赖属性是由Dependency ...
- 【SR】正则化超分辨率复原
正则化超分辨率图像重建算法研究--中国科学技术大学 硕士学位论文--路庆春 最大后验概率(MAP)的含义就是在低分辨率图像序列已知的前提下,使高分辨率图像出现的概率达到最大.
- 努比亚Z18mini多点对焦
25点对焦 分为了中心对焦.中间对焦.边缘对焦三个区域 [参考文献] 手机上感受单反的“多点对焦”努比亚Z18mini给你想象 https://baijiahao.baidu.com/s?id=160 ...
- JAVA“找不到或无法加载主类” 问题的解决办法
http://blog.csdn.net/l_ong211314/article/details/8004975
- Web API中的模型验证Model Validation
数据注释 在ASP.NET Web API中,您可以使用System.ComponentModel.DataAnnotations命名空间中的属性为模型上的属性设置验证规则. using System ...
- 在UI线程之外,多线程处理Bitmaps
多线程处理Bitmaps 上一篇,我们讨论了:Android有效的处理Bitmap,降低内存 ,可是最好不要运行在主线程(UI线程),假设图片是本地的或者网络的又或者是其它地方的. 图片载入的 ...
- select循环读取数据
<select id="srType" name="srType" value="test"> <c:forEach va ...