#include <stdio.h>
#include <algorithm>
#include <string.h>
#include <queue>
#include <stack>
using namespace std;
int dir[]={-1,0,1,0};
int dil[]={0,-1,0,1};
int num[6][6];
int visit[6][6];
int d[30];
struct node
{
int x,y,id;
}a[30];
int cet;
void bfs()
{
queue<node>q;
cet = 0;
a[cet].x = 0;
a[cet].y = 0;
a[cet].id = 0;
d[0]=-1;
q.push(a[cet]);
bool flag = true;
while(!q.empty()&&flag)
{
node xx = q.front();
int t = xx.id;
q.pop();
visit[xx.x][xx.y] = true;
for(int k=0;k<=3;k++)
{
int p = xx.x+dir[k];
int v = xx.y+dil[k];
if(!visit[p][v]&&num[p][v]!=1&&p>=0&&p<5&&v>=0&&v<5)
{
cet++;
d[cet] = t;
a[cet].x = p;
a[cet].y = v;
a[cet].id = cet;
q.push(a[cet]);
if(a[cet].x==4&&a[cet].y==4)
{
flag = false;
break;
}
}
}
}
}
int main()
{
for(int i=0;i<5;i++)
{
for(int j=0;j<5;j++)
{
scanf("%d",&num[i][j]);
visit[i][j] = false;
}
}
memset(d,-1,sizeof(d));
bfs();
stack<node>st;
while(cet>=0)
{
st.push(a[cet]);
cet=d[cet];
}
while(!st.empty())
{
node ll = st.top();
printf("(%d, %d)\n",ll.x,ll.y);
st.pop();
}
return 0;
}
分享到:
相关推荐
描述中提到的“双向BFS解立体八数码问题”表明这个项目使用了广度优先搜索(BFS)算法来解决立体版的八数码问题。立体八数码是在二维八数码的基础上扩展的,增加了更多的维度,使得问题的复杂性增加,解决起来更具...
- (poj1328, poj2109, poj2586):介绍各种搜索算法,如深度优先搜索(DFS)、广度优先搜索(BFS)等。 3. **排序与查找**: - 提供对排序和查找算法的理解与应用指导,包括快速排序、归并排序、二分查找等经典...
### 强大的POJ分类解析 #### 一、引言 POJ(Peking Online Judge)作为中国最早的一批在线编程评测系统之一,为广大学习算法与数据结构的同学提供了丰富的资源。它不仅包含了各类经典的算法题目,还通过详细的分类...
- POJ 3096、POJ 3007:模板函数与类的灵活使用。 #### 特殊数据结构 - **题目示例**: - POJ 3393、POJ 1472:自定义数据结构的设计与实现。 ### 图论 #### 连通性 - **题目示例**: - POJ 1201、POJ 2983:...
POJ1039-Pipe可能需要应用到的算法包括但不限于深度优先搜索(DFS)、广度优先搜索(BFS)、动态规划、贪心算法或图的遍历算法。 4. **图论**:由于题目名为"Pipe",很可能涉及到图的结构,比如管道之间的连接可以...
DFS通过递归或栈实现,而BFS使用队列进行。 5. **二分图匹配**:匈牙利算法或Kuhn-Munkres算法用于求解二分图的最大匹配问题,广泛应用于配对问题。 6. **网络流**:包括Ford-Fulkerson算法和Edmonds-Karp算法,...
搜索如深度优先搜索(DFS)、广度优先搜索(BFS),用于探索问题的所有可能解或最优解;贪心策略则是在每一步选择局部最优解,期望得到全局最优解。例如,题目poj1753和poj2965就属于排序相关的题目。 ### 2. 图论...
在POJ题目中,BFS常用于最短路径问题、最近公共祖先查询等。比如求解两节点间的最短路径,如果边的权重都为1,BFS将给出答案。 3. **Dijkstra算法**:这是解决单源最短路径问题的经典算法,适用于有向图或无向图,...
标题中的“POJ 1078 算法”指的是北京大学在线判题系统(Problem Online Judge,简称POJ)中的第1077题,这通常是一个编程竞赛或者算法练习题目。POJ是一个供程序员练习算法、提交代码并获取运行结果的平台,主要...
标题“PKU_poj 1001~1009”揭示了这是一组与北京大学(Peking University)编程竞赛平台POJ相关的解决方案。在这个压缩包中,包含了从问题1001到1009的C++源代码,表明这些代码已经过验证并成功解决了对应的算法问题。...
1. **基础算法**:如排序算法(快速排序、归并排序、堆排序等)、搜索算法(深度优先搜索DFS、广度优先搜索BFS)、图论算法(最短路径Dijkstra、Floyd、Bellman-Ford)、动态规划(状态转移方程、剪枝技术等)、回溯...
5. 数据结构:可能需要使用栈或队列来辅助搜索过程,或者使用哈希表来存储和查找信息。 6. 状态压缩:如果状态非常多,可能需要使用位操作进行状态压缩,以节省空间。 7. 性能优化:由于POJ对运行时间有严格限制,...
C++中的内存管理包括栈内存和堆内存的使用。栈内存由编译器自动管理,而堆内存则需要程序员手动分配和释放。了解内存管理可以帮助避免内存泄漏和悬挂指针等问题。 六、模板与STL C++的模板允许我们编写泛型代码,...
深度优先搜索(Deep First Search, DFS)和广度优先搜索(Breadth First Search, BFS)是图论和树结构中常见的搜索策略,DFS常用于遍历或搜索树或图,而BFS则用于寻找最短路径等问题。 现在,让我们逐个分析压缩包中的...
4. **数据结构**:如链表、数组、队列、栈等基础数据结构可能在解题中扮演重要角色,特别是队列在BFS中的应用,栈在DFS中的应用。 5. **效率优化**:考虑到POJ平台通常对程序运行时间有限制,优化代码效率,减少...
- "搜索"可能涵盖了深度优先搜索(DFS)、广度优先搜索(BFS)以及二分查找等。 - "图论"可能涉及到最短路径问题(如Dijkstra算法或Floyd-Warshall算法)、最小生成树(Prim或Kruskal算法)等。 - "动态规划"常常...
1. **基础算法**:这是编程初学者的起点,包括基本的数据结构(如数组、链表、栈、队列、树等)和基础的算法(如排序、搜索、递归等)。这些题目旨在帮助学习者建立坚实的算法基础。 2. **数学问题**:这一类题目...
7. **图论算法**:包括深度优先搜索(DFS)、广度优先搜索(BFS)、最短路径算法(Dijkstra、Floyd-Warshall、Bellman-Ford)、最小生成树(Prim、Kruskal)等。 8. **字符串处理**:KMP算法、Rabin-Karp算法、Z...
此类题目通常需要使用深度优先搜索(DFS)、广度优先搜索(BFS)或者启发式搜索等技术来解决问题。 #### 例题 - **1160 邮局**:通过搜索找到最优解。 - **1579 函数运行**:可能需要使用到DFS进行状态探索。 ### ...
【POJ解题报告大全】是我精心整理的一份编程题解集合,主要涵盖了在Programming Online Judge(POJ)平台上遇到的250道经典题目。POJ是一个著名的在线编程竞赛平台,它为程序员提供了大量的算法练习题目,是提高编程...