I am a teacher!

导航

2019年7月16日 #

高精度计算(二):大整数乘法

摘要: 【例1】两个大整数乘法。 输入两个不超过200位的非负大整数a和b,求a×b的值。 (1)编程思路。 用 unsigned num1[200]和num2[200]分别存放两个乘数,用result[400]来存放积。计算的中间结果也都存在result 中。result 长度取400 是因为两个200 阅读全文

posted @ 2019-07-16 12:44 aTeacher 阅读(735) 评论(0) 推荐(0) 编辑

高精度计算(一):大整数加法

摘要: C/C++中的int 类型能表示的范围是-231~231 – 1。unsigned 类型能表示的范围是 0 ~232 – 1,即 0~4294967295。所以,int 和unsigned 类型变量,都不能保存超过10 位的整数。有时我们需要参与运算的数,可能会远远不止10 位,例如要求100!的精 阅读全文

posted @ 2019-07-16 11:53 aTeacher 阅读(5663) 评论(0) 推荐(0) 编辑

2019年7月11日 #

DFS(四):剪枝策略

摘要: 顾名思义,剪枝就是通过一些判断,剪掉搜索树上不必要的子树。在采用DFS算法搜索时,有时候我们会发现某个结点对应的子树的状态都不是我们要的结果,这时候我们没必要对这个分支进行搜索,砍掉这个子树,就是剪枝。 在DFS搜索算法中,剪枝策略就是寻找过滤条件,提前减少不必要的搜索路径。应用剪枝策略的核心问题是 阅读全文

posted @ 2019-07-11 10:30 aTeacher 阅读(1779) 评论(0) 推荐(0) 编辑

2019年7月10日 #

BFS(五):八数码难题 (POJ 1077)

摘要: Eight Description The 15-puzzle has been around for over 100 years; even if you don't know it by that name, you've seen it. It is constructed with 15 阅读全文

posted @ 2019-07-10 11:13 aTeacher 阅读(777) 评论(0) 推荐(0) 编辑

BFS(四):搜索状态判重

摘要: 在采用广度优先算法进行搜索时,一个需要重点注意的是在搜索过程中判重和去重。前面介绍的几个例子中,判重都较简单,如采用vis[]数组,若vis[i]==0,则i未访问过,i入队列;若vis[i]!=0,则i已访问过,不再重复访问。 但在有些实际应用中,判重不是简单一个设置就可完成的。例如,给出一个由1 阅读全文

posted @ 2019-07-10 10:47 aTeacher 阅读(568) 评论(0) 推荐(0) 编辑

2019年7月9日 #

BFS(三):双向广度优先搜索

摘要: 所谓双向广度搜索指的是搜索沿两个方向同时进行:(1)正向搜索:从初始结点向目标结点方向搜索;(2)逆向搜索:从目标结点向初始结点方向搜索;当两个方向的搜索生成同一子结点时终止此搜索过程。 广度双向搜索通常有两种方法:(1)两个方向交替扩展;(2)选择结点个数较少的那个方向先扩展。方法(2)克服了两方 阅读全文

posted @ 2019-07-09 15:33 aTeacher 阅读(2205) 评论(0) 推荐(0) 编辑

DFS(三):八皇后问题

摘要: 【例1】八皇后问题。 在一个8×8国际象棋盘上,放置8个皇后,每个皇后占一格,要求皇后间不会出现相互“攻击”的现象,即不能有两个皇后处在同一行、同一列或同一对角线上。问共有多少种不同的放置方法? (1)编程思路。 在八皇后问题中,由于任意两个皇后不同行,因此可以将布局表示为一维数组chess[8]。 阅读全文

posted @ 2019-07-09 10:16 aTeacher 阅读(756) 评论(0) 推荐(0) 编辑

2019年7月8日 #

DFS(二):骑士游历问题

摘要: 在国际象棋的棋盘(8行×8列)上放置一个马,按照“马走日字”的规则,马要遍历棋盘,即到达棋盘上的每一格,并且每格只到达一次。例如,下图给出了骑士从坐标(1,5)出发,游历棋盘的一种可能情况。 【例1】骑士游历问题。 编写一个程序,对于给定的起始位置(x0,y0),探索出一条路径,沿着这条路径骑士能遍 阅读全文

posted @ 2019-07-08 20:21 aTeacher 阅读(1992) 评论(0) 推荐(0) 编辑

BFS(二):数的变换

摘要: 【例1】整数变换(POJ 3278 “Catch That Cow”) 给定两个整数a和b(0 ≤a,b≤100,000),要求把a变换到b。变换规则为:(1)当前数加1;(2)当前数减1;(3)当前数加倍。 编写程序求从a到b最少需要的变换次数。 例如,从5变换到17,最少需要4歩,具体过程为:5 阅读全文

posted @ 2019-07-08 11:53 aTeacher 阅读(490) 评论(0) 推荐(0) 编辑

DFS和BFS的比较

摘要: DFS(Depth First Search,深度优先搜索)和BFS(Breadth First Search,广度优先搜索)是两种典型的搜索算法。下面通过一个实例来比较一下深度优先搜索和广度优先搜索的搜索过程。 【例1】马的行走路径 设有一个n*m的棋盘(2<=n<=50,2<=m<=50),在棋 阅读全文

posted @ 2019-07-08 10:09 aTeacher 阅读(1398) 评论(0) 推荐(0) 编辑