简单广搜,迷宫问题(POJ3984)
2024-08-24 05:55:53
题目链接:http://poj.org/problem?id=3984
解题报告:
1、设置node结构体,成员pre记录该点的前驱。
2、递归输出:
void print(int i)
{
if(q[i].pre!=-)
{
print(q[i].pre);
printf("(%d, %d)\n",q[i].x,q[i].y);
}
}
int MAP[][];
int front=;
int rear=; int mov[][]={{,},{-,},{,},{,-}}; struct node{
int x,y;
int pre;///从左上角到右下角的每一个元素的,前一个元素的位置,即保存路径;
}q[]; void print(int i)
{
if(q[i].pre!=-)
{
print(q[i].pre);
printf("(%d, %d)\n",q[i].x,q[i].y);
}
} void bfs(int x1,int y1)
{
q[front].x=x1;
q[front].y=y1;
q[front].pre=-;
while(front<rear)
{
for(int k=;k<;k++)
{
int tx=q[front].x+mov[k][];
int ty=q[front].y+mov[k][];
if(tx<||tx>||ty<||ty>||MAP[tx][ty])
continue;
else
{
MAP[tx][ty]=;
q[rear].x=tx;
q[rear].y=ty;
q[rear].pre=front;
rear++;
}
if(tx==&&ty==)
{
print(front);
return ;
}
}
front++;
}
} int main()
{
for(int i=;i<;i++)
for(int j=;j<;j++)
scanf("%d",&MAP[i][j]);
printf("(%d, %d)\n",,);
bfs(,);
printf("(%d, %d)\n",,);
return ;
}
最新文章
- Charles常用的十大功能
- 华东交通大学2016年ACM“双基”程序设计竞赛 1008
- cookie注入讲解
- 如何在Html的CSS中去除<;li>;标签前面小黑点,和ul、LI部分属性方法
- checkbox复选框样式
- Umbraco Form需要引用些客户端dependencies (jquery)
- Java系统程序员修炼之道
- DOM 样式操作
- 无线功率 mW 和 dBm 的换算
- 安装myeclipse2015 stable 3.0破解之后发生出现SECURITY ALERT:iNTEGRITY CHECK ERROR然后闪退解决方案
- 禁止mui事件tab切换内容左右滑动
- 【转】Python微信好友头像拼接图
- mysql \N 的疑惑
- Numpy求均值、中位数、众数的方法
- HDU 1010 Tempter of the Bone (DFS+可行性奇偶剪枝)
- 【深入spring】IoC容器的实现
- JavaScript:今天是今年第几周?
- Java 笔记——在 IDEA 中使用 Maven 配置和使用 MyBatis
- 命令模式(head first 设计模式5)
- Java 8 可重复注解与类型注解