首页 > 代码库 > 机器人
机器人
#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(); }
机器人
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。