1.扯犊子超多if else 判断的代码,华丽丽的TLE。

#include<stdio.h>
#include<string.h>
#define N 1010
int map[N][N];
int f[][]= {,,,,,-,-,};
struct Node
{
int x,y;
int f;
};
int main()
{
int n;
Node tig,don;
while(scanf("%d",&n)!=EOF&&n)
{
memset(map,,sizeof(map));
scanf("%d %d %d",&don.x,&don.y,&don.f);
map[don.x][don.y]=-;
scanf("%d %d %d",&tig.x,&tig.y,&tig.f);
map[tig.x][tig.y]=-;
int flag1=,flag2=;
while(flag1||flag2)
{
//printf("#%d %d\n",don.x,don.y);
//printf("$%d %d\n",tig.x,tig.y);
if(don.x==tig.x&&don.y==tig.y)
{
printf("%d %d\n",don.x,don.y);
break;
}
if(flag1)
{
int x=don.x+f[don.f][];
int y=don.y+f[don.f][];
//printf("$%d %d\n",x,y);
if(x>=&&x<n&&y>=&&y<n&&map[x][y]!=-&&map[x][y]!=-)
{
//printf("sdafj\n");
don.x=x;
don.y=y;
}
else if(y>=n)
{
x+=;
if(x>=&&x<n&&map[x][don.y]!=-&&map[x][don.y]!=-)don.x=x;
else flag1=;
don.f=;
}
else if(x<)
{
y+=;
if(y>=&&y<n&&map[don.x][y]!=-&&map[don.x][y]!=-)don.y=y;
else flag1=;
don.f=;
}
else if(y<)
{
x-=;
if(x>=&&x<n&&map[x][don.y]!=-&&map[x][don.y]!=-)don.x=x;
else flag1=;
don.f=;
}
else if(x>=n)
{
y-=;
if(y>=&&y<n&&map[don.x][y]!=-&&map[don.x][y]!=-)don.y=y;
else flag1=;
don.f=;
}
//else flag1=0;
if(!map[don.x][don.y])map[don.x][don.y]=-;
else if(map[don.x][don.x]==-)map[don.x][don.y]=-;
}
if(flag2)
{
int x=tig.x+f[tig.f][];
int y=tig.y+f[tig.f][];
//printf();
if(x>=&&x<n&&y>=&&y<n&&map[x][y]!=-&&map[x][y]!=-)
{
tig.x=x;
tig.y=y;
}
else if(y>=n)
{
x-=;
if(x>=&&x<n&&map[x][tig.y]!=-&&map[x][tig.y]!=-)tig.x=x;
else flag2=;
tig.f=;
}
else if(x<)
{
y-=;
if(y>=&&y<n&&map[tig.x][y]!=-&&map[tig.x][y]!=-)tig.y=y;
else flag2=;
tig.f=;
}
else if(y<)
{
x+=;
if(x>=&&x<n&&map[x][tig.y]!=-&&map[x][tig.y]!=-)tig.x=x;
else flag2=;
tig.f=;
}
else if(x>=n)
{
y+=;
if(y>=&&y<n&&map[tig.x][y]!=-&&map[tig.x][y]!=-)tig.y=y;
else flag2=;
tig.f=;
}
//else flag2=0;
if(!map[tig.x][tig.y])map[tig.x][tig.y]=-;
else if(map[tig.x][tig.y]==-)map[tig.x][tig.y]=-;
}
} if(!flag1&&!flag2)printf("-1\n");
}
return ;
}

2.思路:

1.如果donkey和tiger能按指定路线行走,判断是否同时到达同意地点

2.如果不能继续行走(遇到自己以前走过的或墙壁),则转弯。

donkey向右转,tiger向左转,转后仍不能前进,则停下。

3.一个停下,另一个可以继续,直到都停下或同时到达同意地点。

不知道哪里错了(WA)

#include<stdio.h>
#include<string.h>
#define N 1100
int map[N][N];
int f[][]= {,,,,,-,-,};
struct Node
{
int x,y;
int f;
};
int main()
{
int n; while(scanf("%d",&n)!=EOF&&n)
{
Node tig,don;
memset(map,,sizeof(map));
scanf("%d %d %d",&don.x,&don.y,&don.f);
map[don.x][don.y]=-;
scanf("%d %d %d",&tig.x,&tig.y,&tig.f);
map[tig.x][tig.y]=-;
int flag1=,flag2=;
while(flag1||flag2)
{
//printf("#%d %d\n",don.x,don.y);
//printf("$%d %d\n",tig.x,tig.y);
if(don.x==tig.x&&don.y==tig.y)
{
printf("%d %d\n",don.x,don.y);
break;
}
if(flag1)
{
int x=don.x+f[don.f][];
int y=don.y+f[don.f][];
//printf("$%d %d\n",x,y);
if(x>=&&x<n&&y>=&&y<n&&map[x][y]!=-&&map[x][y]!=-)
{
//printf("sdafj\n");
don.x=x;
don.y=y;
}
else//换方向
{
if(don.f==)
don.f=;
else
don.f++;
x=don.x+f[don.f][];
y=don.y+f[don.f][];
if(x>=&&x<n&&y>=&&y<n&&map[x][y]!=-&&map[x][y]!=-)
{
don.x=x;
don.y=y;
}
else flag1=;
}
if(flag1)
if(!map[don.x][don.y])map[don.x][don.y]=-;
else if(map[don.x][don.x]==-)map[don.x][don.y]=-;
}
if(flag2)
{
int x=tig.x+f[tig.f][];
int y=tig.y+f[tig.f][];
//printf();
if(x>=&&x<n&&y>=&&y<n&&map[x][y]!=-&&map[x][y]!=-)
{
tig.x=x;
tig.y=y;
}
else
{
if(!tig.f)
tig.f=;
else tig.f--;
x=tig.x+f[tig.f][];
y=tig.y+f[tig.f][];
if(x>=&&x<n&&y>=&&y<n&&map[x][y]!=-&&map[x][y]!=-)
{
tig.x=x;
tig.y=y;
}
else flag2=;
}
if(flag2)
if(!map[tig.x][tig.y])map[tig.x][tig.y]=-;
else if(map[tig.x][tig.y]==-)map[tig.x][tig.y]=-;
}
}
if(!flag1&&!flag2)printf("-1\n");
}
return ;
}

hdu 4740 The Donkey of Gui Zhou的更多相关文章

  1. hdu 4740 The Donkey of Gui Zhou bfs

    The Donkey of Gui Zhou Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproble ...

  2. hdu 4740 The Donkey of Gui Zhou(dfs模拟好题)

    Problem Description There was no donkey ,) , the down-right cell ,N-) and the cell below the up-left ...

  3. hdu 4740 The Donkey of Gui Zhou(暴力搜索)

    题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=4740 [题意]: 森林里有一只驴和一只老虎,驴和老虎互相从来都没有见过,各自自己走过的地方不能走第二次 ...

  4. HDU 4740 The Donkey of Gui Zhou (模拟)

    由于一开始考虑的很不周到,找到很多bug.....越改越长,不忍直视. 不是写模拟的料...................... 反正撞墙或者碰到已经走过的点就会转向,转向后还碰到这两种情况就会傻站 ...

  5. The Donkey of Gui Zhou

    Problem Description There was no donkey in the province of Gui Zhou, China. A trouble maker shipped ...

  6. hdu 4740【模拟+深搜】.cpp

    题意: 给出老虎的起始点.方向和驴的起始点.方向.. 规定老虎和驴都不会走自己走过的方格,并且当没路走的时候,驴会右转,老虎会左转.. 当转了一次还没路走就会停下来.. 问他们有没有可能在某一格相遇. ...

  7. hdu 4740

    题目链接 老虎左拐,老鼠右拐,碰到不能走的拐一次,如果还不能走就停下,自己走过的不能走,求相遇的坐标或-1 一个停下之后,另一个还可以走 #include <cstdio> #includ ...

  8. HDU 4740 模拟题意

    九野的博客,转载请注明出处:http://blog.csdn.net/acmmmm/article/details/11711743 题意:驴和老虎在方格中跑,跑的方式:径直跑,若遇到边界或之前走过的 ...

  9. 2013杭州网络赛C题HDU 4640(模拟)

    The Donkey of Gui Zhou Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/O ...

随机推荐

  1. fn project hot functions 说明

    1. 简单介绍 所谓 hot  functions 实际上就是长时间运行的functions ,简单理解类似后台任务 2. fnproject  处理的方式 fnproject 使用 类似 http的 ...

  2. 洛谷 2831 (NOIp2016) 愤怒的小鸟——仅+1所以bfs优化

    题目:https://www.luogu.org/problemnew/show/P2831 状压dp.跑得很慢.(n^2*2^n) 注意只打一只猪的情况. #include<iostream& ...

  3. VS下QT的自定义槽函数修改方法

    通过几天的摸索,基本发现了两个VS的槽函数的修改方法 一种是UI是通过UI 设计师拖出来的,类似VB的方法,通过拖的方法,按钮的代码是系统自动生成的,在UI.h的头文件下,这个时候,实现槽函数有个固定 ...

  4. 关于android api 23 +的权限问题

    Beginning in Android 6.0 (API level 23), users grant permissions to apps while the app is running, n ...

  5. sourcetree 分支的创建合并

    sourcetree 分支的创建合并,提交 https://blog.csdn.net/qq_34975710/article/details/74469068 sourcetree测试版本的配置忽略 ...

  6. 在laravel中使用支付宝手机网站支付 和 支付宝退款

    1.在蚂蚁金服开放平台中申请对应的应用,并根据提示进行签约 2.给对应的应用信息 生成私钥和公钥(私钥会保存在本地,公钥会放在对应的应用信息中) 3.下载手机网站支付 对应的php sdk 4.将sd ...

  7. syslogd日志简介***

    1.什么是syslogd syslogd是一个守护进程,这个守护进程提供了一个记录特殊事件和消息的标准机制.通俗的讲,syslogd守护进程用于解决系统守护进程的日志记录问题. syslogd记录的日 ...

  8. Qt开发环境下载和安装

    Qt是跨平台的图形开发库,目前由Digia全资子公司 Qt Company 独立运营,官方网址: http://www.qt.io/ 也可以访问Qt项目域名:http://qt-project.org ...

  9. erlang配置三方库

    暴力的: 直接下载解压以后放到erlang的lib目录,比如/usr/local/Cellar/erlang/17.3/lib/erlang/lib 和谐的: 在用户名下建立.erlang文件 在里面 ...

  10. 【转】Jmeter分布式部署文档

    很多时候,我们测试时,如果进行大数据量的并发测试时,单个电脑的CPU和内存可能无法承受,这个时候,我们需要进行一个分布式的测试,比如10000个并发,使用三台电脑来进行并发,Jmeter提供了这种功能 ...