#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <algorithm>
#include <queue>
#include <vector>
using namespace std;
const char*dirs="NESW";
const char*turns="FLR";
int r0,c0,dir,r1,c1,r2,c2,has_edge[][][][],d[][][];
int dir_id(char c){
return strchr(dirs,c)-dirs;
}
int turn_id(char c){
return strchr(turns,c)-turns;
}
int dr[]={-,,,};
int dc[]={,,,-};
struct Node{
int r,c,dir;
};
Node p[][][];
Node walk(Node u,int turn){
int dir=u.dir;
if (turn==) dir=(dir+)%;
if (turn==) dir=(dir+)%;
Node t;
t.r=u.r+dr[dir];t.c=u.c+dc[dir];t.dir=dir;
return t;
}
int init(){
char ch;
memset(d,,sizeof(d));
cin>>r0>>c0>>ch>>r2>>c2;
int dir=dir_id(ch);
r1=r0+dr[dir];c1=c0+dc[dir];
Node t;
t.r=r1;t.c=c1;t.dir=dir;
p[r1][c1][dir]=t;
int x,y;
while (cin>>x&&x){
cin>>y;
string temp;
while (cin>>temp&&temp!="*"){
dir=dir_id(temp[]);
for (int i=;i<temp.size();i++){
int turn=turn_id(temp[i]);
has_edge[x][y][dir][turn]=;
}
}
}
}
int inside(int x,int y){
return (x>&&y>)?:;
}
void printf_ans(Node u){
vector<Node> nodes;
while (){
nodes.push_back(u);
if (d[u.r][u.c][u.dir]==) break;
u=p[u.r][u.c][u.dir];
}
Node t;
t.r=r0;t.c=c0;t.dir=dir;
nodes.push_back(t);
int cnt=;
for (int i=nodes.size()-;i>=;i--){
if (cnt%==) printf(" ");
printf(" (%d,%d)",nodes[i].r,nodes[i].c);
if (++cnt %==) printf("\n");
}
if (nodes.size()%!=) printf("\n");
}
void solve(){
queue<Node>q;
memset(d,-,sizeof(d));
Node u;
u.r=r1;u.c=c1;u.dir=dir;
d[u.r][u.c][u.dir]=;
q.push(u);
while (!q.empty()){
Node u=q.front();q.pop();
if (u.r==r2&&u.c==c2){
printf_ans(u);
return;
}
for (int i=;i<;i++){
Node v=walk(u,i);
if (has_edge[u.r][u.c][u.dir][i]&&inside(v.r,v.c)&&d[v.r][v.c][v.dir]<){
d[v.r][v.c][v.dir]=d[u.r][u.c][u.dir]+;
p[v.r][v.c][v.dir]=u;
q.push(v);
}
}
}
printf("No Solution Possible\n");
}
int main()
{
string Name;
while (cin>>Name&&Name!="END"){
cout<<Name<<endl;
init();
solve();
}
}

WA代码,至今不知道错哪了........哪位大神若是有时间帮我看看吧,code大部分是刘汝佳第二部书上的

UVa816,Ordering Tasks,WA的更多相关文章

  1. uva10905同一思路的两种做法,前一种WA,后一种AC

    这道题应该算一道普通的排序吧,实际上就是另一种形式地比大小,自己最开始是用int型存,后来觉着不行,改用long,结果还是WA,这是第一个程序. 第二个程序是改用string处理,确实比int方便很多 ...

  2. Django-rest-framework(六)filter,ordering,search

    filter queryset 使用request.user相关的queryset class PurchaseList(generics.ListAPIView): serializer_class ...

  3. locust===官方说明文档,关于tasks

    安装: >>> pip  install locust locust在官方simple_code中如下: from locust import HttpLocust, TaskSet ...

  4. 【ACM】那些年,我们挖(WA)过的最短路

    不定时更新博客,该博客仅仅是一篇关于最短路的题集,题目顺序随机. 算法思想什么的,我就随便说(复)说(制)咯: Dijkstra算法:以起始点为中心向外层层扩展,直到扩展到终点为止.有贪心的意思. 大 ...

  5. 拓扑排序(Topological Order)UVa10305 Ordering Tasks

    2016/5/19 17:39:07 拓扑排序,是对有向无环图(Directed Acylic Graph , DAG )进行的一种操作,这种操作是将DAG中的所有顶点排成一个线性序列,使得图中的任意 ...

  6. Ordering Tasks(拓扑排序+dfs)

    Ordering Tasks John has n tasks to do. Unfortunately, the tasks are not independent and the executio ...

  7. UVA.10305 Ordering Tasks (拓扑排序)

    UVA.10305 Ordering Tasks 题意分析 详解请移步 算法学习 拓扑排序(TopSort) 拓扑排序的裸题 基本方法是,indegree表示入度表,vector存后继节点.在tops ...

  8. Ordering Tasks UVA - 10305 图的拓扑排序

    John has n tasks to do. Unfortunately, the tasks are not independent and the execution of one task i ...

  9. 性能测试指标:TPS,吞吐量,并发数,响应时间

    性能测试指标:TPS,吞吐量,并发数,响应时间 常用的网站性能测试指标有:TPS.吞吐量.并发数.响应时间.性能计数器等. 并发数并发数是指系统同时能处理的请求数量,这个也是反应了系统的负载能力. 响 ...

随机推荐

  1. 201521123062《Java程序设计》第7周学习总结

    1. 本周学习总结 2. 书面作业 1.ArrayList代码分析 1.1 解释ArrayList的contains源代码 源代码如下: public boolean contains(Object ...

  2. 201521123003《Java程序设计》第3周学习总结

    1. 本章学习总结 你对于本章知识的学习总结 了解和学会使用更多已有的类,如Calendar类.Math类.Arrays类等等 public.private的权限修饰 学会使用在Eclipse工具栏中 ...

  3. 201521123036 《Java程序设计》第9周学习总结

    本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 书面作业 本次PTA作业题集异常 常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1.2 自己以前编写的代码中 ...

  4. Markdown 练习

    一个例子: 例子开始 1. 本章学习总结 今天主要学习了三个知识点 封装 继承 多态 2. 书面作业 Q1. java HelloWorld命令中,HelloWorld这个参数是什么含义? 今天学了一 ...

  5. JSP第一篇【JSP介绍、工作原理、生命周期、语法、指令、行为】

    什么是JSP JSP全名为Java Server Pages,java服务器页面.JSP是一种基于文本的程序,其特点就是HTML和Java代码共同存在! 为什么需要JSP JSP是为了简化Servle ...

  6. Java实现基本排序算法

    稳定排序算法性能比较 冒泡排序代码: /** * 冒泡排序 * * @param arr * @return */ public int[] bubbleSort(int[] arr) { int t ...

  7. GCD之after

    先介绍下C中的modf函数 函数名:modf 头文件:<math.h> 函数原型:double modf(double x, double *ipart) 函数用途:分解x,以得到x的整数 ...

  8. oracle 角色

    一.介绍角色就是相关权限的命令集合,使用角色的主要目的就是为了简化权限的管理.假定有用户a,b,c为了让他们都拥有如下权限1. 连接数据库2. 在scott.emp表上select,insert,up ...

  9. Opengl4.5 中文手册—G

    索引 A      B    C      D     E     F     G H      I     J      K     L     M     N O      P    Q      ...

  10. 深入浅出AQS之共享锁模式

    在了解了AQS独占锁模式以后,接下来再来看看共享锁的实现原理. 原文地址:http://www.jianshu.com/p/1161d33fc1d0 搞清楚AQS独占锁的实现原理之后,再看共享锁的实现 ...