原题地址
题意很简单就是驴和老虎在方格中跑,跑的方式:径直跑,若遇到边界或之前走过的点则转向,驴向右转,虎向左转,若转向后还不能跑则一直呆着不动,

问题就是:他们是否会相遇,会输出相遇坐标,不会输出-1

可以直接暴力模拟,也可以深搜做,我一开始深搜没搞明白
后来看别人代码,才把自己关于驴子和虎的在同一个格子第二次无法转的条件写明白啦
附上代码:

#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <string>
#include <iomanip>
#include <string.h>
//#include <bits/stdc++.h>
#define INF 999999999
//#include  <iomanip>
using namespace std;
#define ll long long
#define boost ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0)
int ex1,ex2 , ey1 , ey2;
int f1=0 , f2=0 ,flag=1;
int n , d1 ,d2 ,r1 ,r2;
int visx[1010][1011]={0},visy[1011][1011]={0};
int dp[4][2]={0,1,1,0,0,-1,-1,0};
void dfs(int a , int b , int r1, int aa , int bb , int r2){if(a==aa&&b==bb){cout<<aa<<" "<<bb<<endl;flag=0;return ;}int x1,x2,y1 ,y2  ;x1 = a, x2 = aa, y1 =b , y2 =bb;visx[a][b]=1,visy[aa][bb]=1;if(f1&&f2){return ;}if(!f1) {if(a+dp[r1][0]>=n||b+dp[r1][1]>=n||a+dp[r1][0]<0||b+dp[r1][1]<0||visx[a+dp[r1][0]][b+dp[r1][1]])r1 = r1+1>3? 0 : r1 +1;if(a+dp[r1][0]>=n||b+dp[r1][1]>=n||a+dp[r1][0]<0||b+dp[r1][1]<0||visx[a+dp[r1][0]][b+dp[r1][1]])f1 =1;else x1 = a + dp[r1][0], y1 = b + dp[r1][1];}if(!f2) {if(aa+dp[r2][0]>=n||bb+dp[r2][1]>=n||aa+dp[r2][0]<0||bb+dp[r2][1]<0||visy[aa+dp[r2][0]][bb+dp[r2][1]])r2 = r2-1<0? 3 : r2 -1;if(aa+dp[r2][0]>=n||bb+dp[r2][1]>=n||aa+dp[r2][0]<0||bb+dp[r2][1]<0||visy[aa+dp[r2][0]][bb+dp[r2][1]])f2 =1;else x2 = aa + dp[r2][0], y2 = bb + dp[r2][1];}// cout<<x1 <<" "<<y1<<" "<<x2 <<" "<<y2<<endl;dfs(x1,y1,r1,x2,y2,r2);
}
int main()
{boost;while(cin>>n&&n){f1 = 0, f2 =0;flag=1;memset(visx,0,sizeof(visx));memset(visy,0,sizeof(visy));cin >>ex1>>ey1>>r1;cin >>ex2>>ey2>>r2;dfs(ex1,ey1,r1,ex2,ey2,r2);if(flag)cout<<-1<<endl;}return 0;
}

The Donkey of Gui Zhou相关推荐

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

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

  2. HDU 4740——The Donkey of Gui Zhou

    题意:驴跟老虎一起走,问什么时候能相遇 题目的意思是在一个地方只能转一次弯..坑了好长时间 代码如下: #include <cstring> #include <stdio.h> ...

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

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

  4. 2013_hangzhou_online

    4738 Caocao's Bridges 求无向图的桥中最小的那个,tarjan 4739 Zhuge Liang's Mines 状态压缩+暴力 4740 The Donkey of Gui Zh ...

  5. 2013年ACM网络赛杭州赛区

    点击打开链接 Caocao's Bridges Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/ ...

  6. Android View之用户界面...

    PS:Android的控件真的是很多...现在还在忙到控件...也是神了.... 学习内容: 1.Spinner下拉菜单... 2.AutoComplete TextView自动完成文本框... 1. ...

  7. 计算机考研英语自我介绍范文,研究生考研英语面试自我介绍范文(精选4篇)...

    研究生考研英语面试自我介绍范文(精选4篇) 当来到一个陌生的'地方时,通常需要我们进行自我介绍,通过自我介绍可以得到他人的认识.写自我介绍可不能随随便便哦,以下是小编为大家整理的研究生考研英语面试自我 ...

  8. 全国主要城市地区中心点位置

    {   "errcode": 0,   "errmsg": "success",   "data": [     {   ...

  9. 信息技术查阅计算机日历教案,贵州教育出版社小学四年级信息技术下册教案全册...

    步骤: (1)启动了日历向导后,进入日历向导的开始界面,单击"下一步"按钮. (2)打开日历的选择样式中共有3种样式,选择其中的"优美"后单击"下一步 ...

最新文章

  1. 三代测序原理与数据文件简介(SMRT+Nanopore)
  2. 关于一道简单的Java 基础面试题的剖析: short s1=1;s1 = s1 +1会报错吗?
  3. TACACS 协议简介与开发总结
  4. [Js代码风格]浅析模块模式
  5. 一种通用的动作解决方案
  6. 限制checkbox复选框的最大可选数量
  7. 【BZOJ2296】随机种子(构造)
  8. matlab中 晶闸管整流桥导通角_逆变角如何设置,晶闸管2011-6-6
  9. 面试:第十四章:大厂中高级java程序员面试题
  10. Windows防火墙设置
  11. 设置Linux在未登录账号情况下自动连接wifi
  12. Matlab画三维立体网状图形(类似魔方)
  13. 证监会叫停VR等行业跨界定增,福兮祸兮?
  14. 利用python+迅雷批量下载视频
  15. textarea层级问题
  16. 深入理解机器学习中的:目标函数,损失函数和代价函数
  17. matlab地球月球卫星关系,Matlab 卫星绕地球旋转演示动画
  18. Java二叉树(递归实现)
  19. Java中String接受的最大字符串的长度
  20. java大数据课程大纲(小牛学堂)

热门文章

  1. gdb调试堆栈信息一堆问号如 #0 0x0000000000000000 in ?? () 看这里跟踪
  2. 深入理解mysql之BDB系列(1)---BDB相关基础知识
  3. 回归分析:最小二乘法估计线性回归模型的参数
  4. 初一英语 听力训练一 英文歌曲欣赏及听力练习
  5. 《The Ride of a Lifetime》---- 迪士尼CEO自述批量打造超级IP的经营哲学
  6. Android四大组件Broadcast中注册广播registerReceiver流程源代码详解
  7. IE文档模式--添加水印
  8. 维修成本如此高,是修还是换?
  9. 一名优秀的软件测试人员,需要掌握哪些技能?
  10. Linux 看懂top命令