博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法:图论问题
阅读量:4059 次
发布时间:2019-05-25

本文共 569 字,大约阅读时间需要 1 分钟。

图论问题主要分为:

BFSorDFS搜索,关键在于剪枝。
AOVorAOE图,关键在于排序,找关键路径。


问题A:

POJ1659
给出N个顶点度数,判断是否可图?

贪心方法尝试构图,时间O(NNlogN)

每次找出度数最大的点,与其后数个点构成边,构成边后,两个顶点度数-1。

但凡有一个顶点不能构成边,则不可图。


问题B:

POJ1465
给定一个5000以内的正整数N,给定M个10以内的非负数,则存在N的最小倍数的每一位都由M中数字组成,返回这个数。

逆向思维BFS,由M个数字从1位扩展到k位,来构造合法数字,保证从小到大,从而判断是否可以整除N。

同余剪枝,若a已经处理过,则出现b%B == a%N,b不再考虑,同余则代表小于N的部分相同,只能通过在末尾添加数字来改变,所以两种情况相同。

状态压缩,状态太多,每个状态都由大数(位数接近1000)表示,空间开销大。使用挂链的方式,每个后继位置的新数字指向之前数字,形成一条数字链,不同的状态可以共用数字。


问题C:

POJ1324
给定一个迷宫最大20*20,迷宫里可能有墙,给定迷宫里一条蛇,长度最多为7,蛇在移动时不可碰墙或自身,则到达指定位置步数?

BFS+状态压缩

关键在于蛇状态的保存,利用2位二进制表示四种状态蛇身,上下左右,则通过蛇头可以推断出连续蛇身的位置。


转载地址:http://udwji.baihongyu.com/

你可能感兴趣的文章
大数据入门:Java和Scala编程对比
查看>>
大数据入门:Scala函数式编程
查看>>
C++报错:引发了未经处理的异常:写入访问权限冲突, p 是 0xCCCCCCCC
查看>>
【数据结构周周练】002顺序表与链表
查看>>
C++报错:C4700:使用了非初始化的局部变量
查看>>
【数据结构周周练】003顺序栈与链栈
查看>>
【数据结构周周练】006队列基本操作-顺序结构及链式结构实现
查看>>
C++类、结构体、函数、变量等命名规则详解
查看>>
C++ goto语句详解
查看>>
【数据结构周周练】008 二叉树的链式创建及测试
查看>>
《算法分析与设计》 第七章 贪心法 基本知识点整理
查看>>
贪心法求解背包问题 C++
查看>>
贪心法求解TSP问题 C++
查看>>
《软件体系结构》 第四章 软件体系结构描述
查看>>
《软件体系结构》第六章 Web服务体系结构
查看>>
《软件体系结构》 第七章 基于体系结构的软件开发
查看>>
《软件体系结构》 第九章 软件体系结构评估
查看>>
《软件体系结构》 第十章 软件产品线体系结构
查看>>
《软件过程管理》 第六章 软件过程的项目管理
查看>>
《软件过程管理》 第七章 软件过程的质量管理
查看>>