标签:bsp std tail -- include node printf turn scan
#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={}; while(head<tail) { cur=qe(); printf("%d %d\n",cur.x,cur.y); if(cur.x==flag1x&&cur.y==flag1y) { printf("%d",cur.step); break; } for(int i=0;i<4;i++) { ns=cur; if(i==0) { ns.x--; if(a[ns.x][ns.y]==‘.‘) { if(!b[ns.x][ns.y]) { b[ns.x][ns.y]=1; ns.step++; en(ns); } } } } //左转 for(int i=0;i<4;i++) { ns=cur; if(i==1) { ns.y--; if(a[ns.x][ns.y]==‘.‘) { if(!b[ns.x][ns.y]) { b[ns.x][ns.y]=1; ns.step++; if(a[ns.x]!=a[cur.x]) { ns.step++; } en(ns); } } } } //右转 for(int i=0;i<4;i++) { ns=cur; if(i==3) { ns.y++; if(a[ns.x][ns.y]==‘.‘) { if(!b[ns.x][ns.y]) { b[ns.x][ns.y]=1; ns.step++; if(a[ns.x]!=a[cur.x]) { 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; } } } //printf("%d %d",flagx,flagy); first.step=0; bfs(); }
标签:bsp std tail -- include node printf turn scan
原文地址:http://www.cnblogs.com/liunx1109/p/6126552.html