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的更多相关文章
随机推荐
- Django之XSS攻击
一.什么是XSS攻击 xss攻击:----->web注入 xss跨站脚本攻击(Cross site script,简称xss)是一种“HTML注入”,由于攻击的脚本多数时候是跨域的,所以称 ...
- 品味性能之道<七>:索引基础
一.索引概述 索引(index),它是数据库必不可少的一部分.它其实很简单呐!很好理解. 索引好比如一本书的目录,一张地图,一个写字楼里挂在大堂墙上的公司名录,一个地铁站的出口指示 ...
- Type mismatch in value from map: expected org.apache.hadoop.io.longWritable
hadoop 编译的程序的报错 执行了命令: hadoop fs -put HTTP_20130313143750.dat /date.dochadoop jar MyDataCount.jar co ...
- HDU 5956 The Elder (树上斜率DP)
题意:给定上一棵树,然后每条边有一个权值,然后每个点到 1 的距离有两种,第一种是直接回到1,花费是 dist(1, i)^2,还有另一种是先到另一个点 j,然后两从 j 向1走,当然 j 也可以再向 ...
- VBA替换函数
Sub test() On Error Resume Next Dim arr1, arr2, i, j arr1 = Range("T1:EI3") arr2 = Range(& ...
- AirplaceLogger源代码解析
将源代码添加进Eclipse中,右键-->Import-->Existing Projects into Workspace-->选择AirplaceLogger源代码文件夹即可导入 ...
- Java中的I/O 线程 网络
Java学习总结--I/O,线程,网络题目整理 I/O 1.有什么理由必须要用字符流? 答:处理字符数据的语法更方便.自动化字符编码 2.插入哪些代码可以让下面的代码正确编译? Console con ...
- hdu1002 A + B Problem II(高精度加法) 2016-05-19 12:00 106人阅读 评论(0) 收藏
A + B Problem II Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- PAT甲 1012. The Best Rank (25) 2016-09-09 23:09 28人阅读 评论(0) 收藏
1012. The Best Rank (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue To eval ...
- Scala中()与{}
Scala中()与{}的关系 在Scala中有些时候()和{}是可以相互替换的,但是如果不弄清楚到底什么时候该用(),什么时候该用{},什么时候二者可以相互替换,那么在写代码的时候难免为出错,并且自己 ...