hdu 4740 The Donkey of Gui Zhou
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的更多相关文章
- 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 ...
- 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 ...
- hdu 4740 The Donkey of Gui Zhou(暴力搜索)
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=4740 [题意]: 森林里有一只驴和一只老虎,驴和老虎互相从来都没有见过,各自自己走过的地方不能走第二次 ...
- HDU 4740 The Donkey of Gui Zhou (模拟)
由于一开始考虑的很不周到,找到很多bug.....越改越长,不忍直视. 不是写模拟的料...................... 反正撞墙或者碰到已经走过的点就会转向,转向后还碰到这两种情况就会傻站 ...
- The Donkey of Gui Zhou
Problem Description There was no donkey in the province of Gui Zhou, China. A trouble maker shipped ...
- hdu 4740【模拟+深搜】.cpp
题意: 给出老虎的起始点.方向和驴的起始点.方向.. 规定老虎和驴都不会走自己走过的方格,并且当没路走的时候,驴会右转,老虎会左转.. 当转了一次还没路走就会停下来.. 问他们有没有可能在某一格相遇. ...
- hdu 4740
题目链接 老虎左拐,老鼠右拐,碰到不能走的拐一次,如果还不能走就停下,自己走过的不能走,求相遇的坐标或-1 一个停下之后,另一个还可以走 #include <cstdio> #includ ...
- HDU 4740 模拟题意
九野的博客,转载请注明出处:http://blog.csdn.net/acmmmm/article/details/11711743 题意:驴和老虎在方格中跑,跑的方式:径直跑,若遇到边界或之前走过的 ...
- 2013杭州网络赛C题HDU 4640(模拟)
The Donkey of Gui Zhou Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/O ...
随机推荐
- 如何在本地浏览器访问nginx
1.打开vmware"编辑虚拟机"设置,点击“网络适配器”选择“桥联模式”: 2.开启该虚拟机,输入用户名root及密码登陆服务器: 3.以管理员身份打开cmd,在命令窗口输入ip ...
- openfaas 私有镜像配置
备注: 此项目是使用nodejs 生成唯一id 的\ 预备环境 docker harbor faas-cli openfaas k8s 1. 项目初始化 faas-cli new node --la ...
- Log4j日志配置说明
一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使 ...
- (转)Android 50道面试题总结(大家看看吧)
1. 方法重载与覆盖的区别?(Overload与Override的区别)2. String 和StringBuffer的区别3. 字符串“abcde”通过写一个函数不让调用第三方的字符串,实现一个字符 ...
- jq添加和移除事件的方法,prop和attr
会在写条件判断的时候遇到,今天在判断没有剩余产品的时候,移除事件.当有产品的时候添加事件: 移除onClick事件: $("a").removeAttr("onclick ...
- 关于yii2的中文乱码问题
在数据库配置中这么配就可以了 <?php return [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=127.0.0. ...
- Mvn+Jetty启动项目
这里要注意,Mvn加jetty启动项目,主要用到的是Maven的jetty插件,和你下的Jetty服务器没什么关系. 我的运行环境是jdk1.7,Eclipse-mars,Maven是Eclipse自 ...
- java代码 求和1+1/2+1/3+1/4+1/5+1/6+.......+1/n 的值~~~~
总结:很简单的练习: s=1+1/2+1/3+1/4+1/5+1/6+.......+1/n的值:注意这里的s是float型,绝对记住不能留整数型 即s+=1/i; package com.c2; i ...
- Build Assetbundle出错:An asset is marked as dont save, but is included in the build
前天Build Assetbundle的时候出错了,导致打包失败,具体日志内容如下: An asset is marked as dont save, but is included in the b ...
- ctf中检测和分离隐藏的文件
使用binwalk检测是否隐藏了文件 root@sch01ar:~# binwalk '/root/桌面/test.jpg' 还藏了一个zip文件,接下来用foremost来分离文件 root@sch ...