hdu 4740 (一步一步模拟就好了)考查耐心与细心
来源:互联网 发布:打印机网络共享软件 编辑:程序博客网 时间:2024/06/06 05:17
http://acm.hdu.edu.cn/showproblem.php?pid=4740
网络赛时这道题没做出来,一直Runtime Error(ACCESS_VIOLATION),还不心不够静,心态啊!
/***************************# 1. a[n][n] 代表矩阵;初始为0 2. tiger和donkey 同时从起点运动,dfs参数 : 首先两个坐标(4个参数),表示位置 两个状态 ,表示tiger和donkey的运动是否,初始1;代表运动 dfs结束条件 : 都停止(状态都是0) || 相遇(两个坐标相同) # 2013-11-12 17:33:16 # Time: 31MS Memory: 8384K# Author: zyh***************************/ #define N 1020#include<iostream>#include<algorithm>#include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>using namespace std;int dir[4][2]={0,1,1,0,0,-1,-1,0};int n,flag,vt[N][N],vd[N][N];void dfs(int tx,int ty,int tdir,bool ts,int dx,int dy,int ddir,bool ds){//printf("%d,%d,%d,%d,%d,%d,%d,%d\n",tx,ty,tdir,ts,dx,dy,ddir,ds);if(tx==dx && ty==dy ){printf("%d %d\n",tx,ty);flag = 1;return;}int ntx = tx,nty = ty,ndx = dx,ndy = dy;//分情况:1.都不能动,结束, 1.都能运动;2.tiger动donkey不动,3.donkey动tiger不动 if(!ts && !ds) return;vt[tx][ty] = vd[dx][dy] = 1 ; if(ts){if(tx+dir[tdir][0] >=n || ty +dir[tdir][1]>=n //!!!第一次RE是忘了写 <0 的情况了 || tx+dir[tdir][0] <0 || ty +dir[tdir][1]<0|| vt[tx+dir[tdir][0]][ty +dir[tdir][1]] )//该调头了 tdir = tdir-1<0 ? 3 : tdir-1;if(tx+dir[tdir][0] >=n || ty +dir[tdir][1]>=n //!!!第二次RE忘了写这里越界的情况了 !!! || tx+dir[tdir][0] <0 || ty +dir[tdir][1]<0|| vt[tx+dir[tdir][0]][ty +dir[tdir][1]] ) ts = 0;//掉头后依然不能继续走,则停止 else ntx = tx+dir[tdir][0],nty = ty +dir[tdir][1];}if(ds){if(dx+dir[ddir][0] >=n || dy +dir[ddir][1]>=n|| dx+dir[ddir][0] <0 || dy +dir[ddir][1]<0|| vd[dx+dir[ddir][0]][dy +dir[ddir][1]] )//该调头了 ddir = ddir+1>3 ? 0 : ddir+1;if(dx+dir[ddir][0] >=n || dy +dir[ddir][1]>=n || dx+dir[ddir][0] <0 || dy +dir[ddir][1]<0|| vd[dx+dir[ddir][0]][dy +dir[ddir][1]] ) ds = 0;//掉头后依然不能继续走,则停止 else ndx = dx+dir[ddir][0],ndy = dy +dir[ddir][1];}dfs(ntx,nty,tdir,ts,ndx,ndy,ddir,ds); //!!!第三次RE 是这里传递参数忘了改了 !!! } int main(){int tx,ty,tdir,dx,dy,ddir;while(~scanf("%d",&n),n){scanf("%d%d%d%d%d%d",&dx,&dy,&ddir,&tx,&ty,&tdir);memset(vt,0,sizeof(vt));memset(vd,0,sizeof(vd));flag=0;dfs( tx, ty, tdir,1, dx, dy, ddir, 1);if(!flag) puts("-1");}return 0; }
- hdu 4740 (一步一步模拟就好了)考查耐心与细心
- 独轮车 题目代码如下 细心和耐心就好
- 耐心,细心,贴心,静心
- HDU 1238 Substrings 细心的模拟
- 播放器(模拟题,细心)
- 细心耐心,安全工程师的最基本特质
- 细心的观察,耐心的倾听
- HDU 4550 卡片游戏(贪心+细心)
- HDU 5546 放棋 (dfs,细心)
- hdoj 1045 Fire Net 直接枚举 模拟就好了
- hdu4883 TIANKENG’s restaurant 模拟下就好了
- UVA 509 RAID! 模拟?直接搞就好了 暴力
- poj1051 细心模拟
- 九度OJ 1334 占座位 (模拟 细心)
- 九度OJ 1363 欢乐斗地主 (模拟,细心)
- codeforces Petya and Exam(模拟+哈希+细心分析)
- 耐心和细心使得第四次包交换例程成功
- POJ 3923 - 模拟,要细心
- jdbc的事务管理
- java读取字符串中数字
- Hadoop中map数的计算
- image文件图片显示,存储,读取问题
- HDFS bytes read与Map input bytes
- hdu 4740 (一步一步模拟就好了)考查耐心与细心
- Random的假随机
- 如何修改apusic应用服务器的启动内存
- 两种方式情况页面文本框
- 将apusic添加到windows服务
- GSON使用的学习笔记,入门篇
- 网站建设怪圈之四分析
- explicit构造函数
- HTTP状态码