您的位置:首页 > 其它

POJ 3984 静态数组队列学习应用

2016-02-24 21:32 573 查看
#include<cstdio>

typedef struct name
{
int x;
int y;
int pre;
}node;

int maze[5][5];
int dx[4]={1,-1,0,0};
int dy[4]={0,0,1,-1};
int head=0,tail=1;
node r[100];

void print(int i)
{
if(r[i].pre!=-1)
{
print(r[i].pre);
printf("(%d, %d)\n",r[i].x,r[i].y);
}
}

void findroad(int i,int j)
{
r[head].x=i;
r[head].y=j;
r[head].pre=-1;
while(head<tail)
{
for(int i=0;i<4;i++)
{
int a=dx[i]+r[head].x;
int b=dy[i]+r[head].y;
if(a<0||a>=5||b<0||b>=5||maze[a][b])
{
continue;
}
else
{
maze[a][b]=1;
r[tail].x=a;
r[tail].y=b;
r[tail].pre=head;
tail++;
}
if(a==4&&b==4)
{
print(head);
return ;
}
}
head++;
}
}

int main()
{
for(int i=0;i<5;i++)
{
for(int j=0;j<5;j++)
{
scanf("%d",&maze[i][j]);
}
}
printf("(0, 0)\n");
findroad(0,0);
printf("(4, 4)\n");
return 0;
}
该题特别对于队列的使用没有用STL而是靠静态数组队列实现 ,值得学习。还有要注意审题仔细,避免输出格式错误,坐标x与y之间的逗号之后还要加个空格
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: