TOJ2470
#include <stdio.h> struct node{ int x; int y; int step; }first; int zx[4]={-1,0,1,0}; int zy[4]={0,-1,0,1}; int a[10][10]; node queue[100]={0}; int head=0,tail=0; int b[10][10]={0}; int flagx,flagy,flag1x,flag1y; //进栈 void en(node E) { queue[tail++]=E; } //出栈 node qe() { return queue[head++]; } void bfs() { first.x=flagx; first.y=flagy; en(first); b[first.x][first.y]=1; node cur={}; node ns={}; int d1=1,d2=0,d3=0,d4=0; while(head<tail) { cur=qe(); printf("%d %d\n",cur.x ,cur.y); if(cur.x==flag1x&&cur.y==flag1y) { printf("%d\n",cur.step); break; } for(int i=0;i<4;i++) { ns=cur; ns.x=ns.x+zx[i]; ns.y=ns.y+zy[i]; //直走 if(i==0) { if(a[ns.x][ns.y]=='.'||a[ns.x][ns.y]=='T') { if(!b[ns.x][ns.y]) { b[ns.x][ns.y]=1; d1++; d2=0; d3=0; d4=0; if(d1==1) ns.step++; ns.step++; printf("step=%d\n",ns.step); en(ns); } } } //后退 if(i==2) { if(a[ns.x][ns.y]=='.'||a[ns.x][ns.y]=='T') { if(!b[ns.x][ns.y]) { b[ns.x][ns.y]=1; d1=0; d2=0; d3=0; d4++; if(d4==1) ns.step++; ns.step++; printf("step=%d\n",ns.step); en(ns); } } } //左转 if(i==1) { if(a[ns.x][ns.y]=='.'||a[ns.x][ns.y]=='T') { if(!b[ns.x][ns.y]) { b[ns.x][ns.y]=1; d1=0; d2++; d3=0; d4=0; if(d2==1) ns.step++; ns.step++; printf("step=%d\n",ns.step); en(ns); } } } //右转 if(i==3) { if(a[ns.x][ns.y]=='.'||a[ns.x][ns.y]=='T') { if(!b[ns.x][ns.y]) { b[ns.x][ns.y]=1; d1=0; d2=0; d3++; d4=0; if(d3==1) ns.step++; ns.step++; printf("step=%d\n",ns.step); en(ns); } } } } } } void main() { int t,w,l; scanf("%d %d",&w,&l); for(int i=0;i<w;i++) { getchar(); for(int j=0;j<l;j++) { scanf("%c",&a[i][j]); if(a[i][j]=='S') { flagx=i; flagy=j; a[i][j]='#'; } if(a[i][j]=='T') { flag1x=i; flag1y=j; } } } first.step=0; bfs(); }
TOJ2470的更多相关文章
随机推荐
- CentOS7下搭建基本LNMP环境,部署WordPress
系统环境:CentOS Linux release 7.4.1708 (Core) 3.10.0-693.el7.x86_64 软件版本:nginx-1.12.2.tar.gz php 7.1.11 ...
- 转:从框架看PHP的五种境界及各自的薪资待遇(仅限于二三线城市,一线除外)
在撰写此文前首先必须申明的是本人不鄙视任何一种框架,也无意于挑起PHP框架间的战争,更没有贬低某个框架使用者的用意,本文纯粹个人的看法.你可以认为我无知也好,或者装逼也好,请不要试着在任何情况下,随便 ...
- SSL - 简介
一.密码技术 要了解SSL协议,首先要了解:加密算法.消息摘要算法(又称为哈希算法Hash),数字签名等概念.这些技术每个都可以写出一整本的书,它们结合在一起,提供了保密性.完整性和身份验证的功能. ...
- loadrunner12-查看controller运行报错详细log
1.路径为controller-->results-->results setting 2.打开文件夹res/log/***.log,里面会有当前场景运行的log日志. 注:启用这个首先保 ...
- 2018.10.16 uoj#340. 【清华集训2017】小 Y 和恐怖的奴隶主(矩阵快速幂优化dp)
传送门 一道不错的矩阵快速幂优化dpdpdp. 设f[i][j][k][l]f[i][j][k][l]f[i][j][k][l]表示前iii轮第iii轮还有jjj个一滴血的,kkk个两滴血的,lll个 ...
- 2018.09.27 bzoj3029: 守卫者的挑战(概率dp)
传送门 概率dp经典题目. 直接f[i][j][k]f[i][j][k]f[i][j][k]表示当前是第i次挑战,已经胜利了j次,目前的背包剩余空间是k. 然后用前面的转移后面的就行了. 注意第三维可 ...
- android图形系统概述
简介 本文讲解的内容是Android4.1以后的系统机制,将从整体上分析Android图形显示系统的结构,不深入分析每一层内部的代码实现,更多的是使用流程图和结构图来让大家理解Android是如何绘制 ...
- hdu 1164 Eddy's research I
http://acm.hdu.edu.cn/showproblem.php?pid=1164 题意很简单,只是写代码的时候需要注意几个问题 一.筛选素数的时候记得用埃式筛选法,要是直接找可能会WA. ...
- javascript 问题
两个数组比较:a.sort().toString() == b.sort().toString() for循环内有异步方法时,需要闭包 JSON.parse(data)出错时(提示.[nodejs中] ...
- java.util.Date与java.sql.Date的关系和转换方法(转)
在ResultSet中我们经常使用的setDate或getDate的数据类型是java.sql.Date,而在平时java程序中我们一般习惯使用 java.util.Date. 因此在DAO层我们经常 ...