`

poj 3984 bfs+栈的使用

    博客分类:
  • acm
阅读更多

#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;
}
分享到:
评论

相关推荐

    POJ_3131.zip_POJ 八数码_poj

    描述中提到的“双向BFS解立体八数码问题”表明这个项目使用了广度优先搜索(BFS)算法来解决立体版的八数码问题。立体八数码是在二维八数码的基础上扩展的,增加了更多的维度,使得问题的复杂性增加,解决起来更具...

    acm训练计划(poj的题)

    - (poj1328, poj2109, poj2586):介绍各种搜索算法,如深度优先搜索(DFS)、广度优先搜索(BFS)等。 3. **排序与查找**: - 提供对排序和查找算法的理解与应用指导,包括快速排序、归并排序、二分查找等经典...

    强大的poj分类

    ### 强大的POJ分类解析 #### 一、引言 POJ(Peking Online Judge)作为中国最早的一批在线编程评测系统之一,为广大学习算法与数据结构的同学提供了丰富的资源。它不仅包含了各类经典的算法题目,还通过详细的分类...

    经典 的POJ 分类

    - POJ 3096、POJ 3007:模板函数与类的灵活使用。 #### 特殊数据结构 - **题目示例**: - POJ 3393、POJ 1472:自定义数据结构的设计与实现。 ### 图论 #### 连通性 - **题目示例**: - POJ 1201、POJ 2983:...

    POJ1039-Pipe

    POJ1039-Pipe可能需要应用到的算法包括但不限于深度优先搜索(DFS)、广度优先搜索(BFS)、动态规划、贪心算法或图的遍历算法。 4. **图论**:由于题目名为"Pipe",很可能涉及到图的结构,比如管道之间的连接可以...

    POJ中级图算法所有题目【解题报告+AC代码】

    DFS通过递归或栈实现,而BFS使用队列进行。 5. **二分图匹配**:匈牙利算法或Kuhn-Munkres算法用于求解二分图的最大匹配问题,广泛应用于配对问题。 6. **网络流**:包括Ford-Fulkerson算法和Edmonds-Karp算法,...

    POJ 分类题目 txt文件

    搜索如深度优先搜索(DFS)、广度优先搜索(BFS),用于探索问题的所有可能解或最优解;贪心策略则是在每一步选择局部最优解,期望得到全局最优解。例如,题目poj1753和poj2965就属于排序相关的题目。 ### 2. 图论...

    北大POJ初级-图算法

    在POJ题目中,BFS常用于最短路径问题、最近公共祖先查询等。比如求解两节点间的最短路径,如果边的权重都为1,BFS将给出答案。 3. **Dijkstra算法**:这是解决单源最短路径问题的经典算法,适用于有向图或无向图,...

    POJ 1077 算法

    标题中的“POJ 1078 算法”指的是北京大学在线判题系统(Problem Online Judge,简称POJ)中的第1077题,这通常是一个编程竞赛或者算法练习题目。POJ是一个供程序员练习算法、提交代码并获取运行结果的平台,主要...

    PKU_poj 1001~1009

    标题“PKU_poj 1001~1009”揭示了这是一组与北京大学(Peking University)编程竞赛平台POJ相关的解决方案。在这个压缩包中,包含了从问题1001到1009的C++源代码,表明这些代码已经过验证并成功解决了对应的算法问题。...

    poj大量习题详解ACM

    1. **基础算法**:如排序算法(快速排序、归并排序、堆排序等)、搜索算法(深度优先搜索DFS、广度优先搜索BFS)、图论算法(最短路径Dijkstra、Floyd、Bellman-Ford)、动态规划(状态转移方程、剪枝技术等)、回溯...

    poj-1028-Web-Navigation.zip_poj

    5. 数据结构:可能需要使用栈或队列来辅助搜索过程,或者使用哈希表来存储和查找信息。 6. 状态压缩:如果状态非常多,可能需要使用位操作进行状态压缩,以节省空间。 7. 性能优化:由于POJ对运行时间有严格限制,...

    c++ npu poj答案100道全

    C++中的内存管理包括栈内存和堆内存的使用。栈内存由编译器自动管理,而堆内存则需要程序员手动分配和释放。了解内存管理可以帮助避免内存泄漏和悬挂指针等问题。 六、模板与STL C++的模板允许我们编写泛型代码,...

    POJ_keptsl6_C++_

    深度优先搜索(Deep First Search, DFS)和广度优先搜索(Breadth First Search, BFS)是图论和树结构中常见的搜索策略,DFS常用于遍历或搜索树或图,而BFS则用于寻找最短路径等问题。 现在,让我们逐个分析压缩包中的...

    POJ1408-Fishnet

    4. **数据结构**:如链表、数组、队列、栈等基础数据结构可能在解题中扮演重要角色,特别是队列在BFS中的应用,栈在DFS中的应用。 5. **效率优化**:考虑到POJ平台通常对程序运行时间有限制,优化代码效率,减少...

    POJ部分源代码(151题)

    - "搜索"可能涵盖了深度优先搜索(DFS)、广度优先搜索(BFS)以及二分查找等。 - "图论"可能涉及到最短路径问题(如Dijkstra算法或Floyd-Warshall算法)、最小生成树(Prim或Kruskal算法)等。 - "动态规划"常常...

    poj 1000 - 2000 部分题目 官方分类

    1. **基础算法**:这是编程初学者的起点,包括基本的数据结构(如数组、链表、栈、队列、树等)和基础的算法(如排序、搜索、递归等)。这些题目旨在帮助学习者建立坚实的算法基础。 2. **数学问题**:这一类题目...

    北京大学poj题目解题代码

    7. **图论算法**:包括深度优先搜索(DFS)、广度优先搜索(BFS)、最短路径算法(Dijkstra、Floyd-Warshall、Bellman-Ford)、最小生成树(Prim、Kruskal)等。 8. **字符串处理**:KMP算法、Rabin-Karp算法、Z...

    poj各种题型详细分类

    此类题目通常需要使用深度优先搜索(DFS)、广度优先搜索(BFS)或者启发式搜索等技术来解决问题。 #### 例题 - **1160 邮局**:通过搜索找到最优解。 - **1579 函数运行**:可能需要使用到DFS进行状态探索。 ### ...

    本人整理的POJ解题报告大全

    【POJ解题报告大全】是我精心整理的一份编程题解集合,主要涵盖了在Programming Online Judge(POJ)平台上遇到的250道经典题目。POJ是一个著名的在线编程竞赛平台,它为程序员提供了大量的算法练习题目,是提高编程...

Global site tag (gtag.js) - Google Analytics