算法设计与学习
文章平均质量分 65
寒沧
渣渣学生
展开
-
【算法学习】回溯法
回溯法(英语:backtracking)是暴力搜寻法中的一种。 回溯法采用试错的思想,它尝试分步的去解决一个问题。在分步解决问题的过程中,当它通过尝试发现现有的分步答案不能得到有效的正确的解答的时候,它将取消上一步甚至是上几步的计算,再通过其它的可能的分步解答再次尝试寻找问题的答案。回溯法通常用最简单的递归方法来实现,在反复重复上述的步骤后可能出现两种情况: (1原创 2014-01-24 16:08:52 · 1350 阅读 · 0 评论 -
全排列生成的算法分析
字典序法 字典序法中,对于数组1, 2, 3.....n的排列, 不同排列的先后顺序是从左到右逐个比较对应的数字的先后来决定的。例如,对于5个数字的排列12354和12345,排列12345在前,12354在后, 按照这样的规定,5个数字中排列在最前面的是12345, 排在最后面的事54321。 字典序算法思想如下: 设P是1~n的一个全排列, p = p1p2.原创 2014-01-20 14:17:15 · 931 阅读 · 0 评论 -
【搜索】BFS、DFS的综合练习(小鼠迷宫)
分析:利用bfs可以计算出最短路径的距离len(即移动次数),然后用dfs计算出等于len(移动次数)时有多少种不同的最短路径。 #include#include#include#includeusing namespace std;#define N 100int mark[N][N], map[N][N];struct node{ int x, y; int st原创 2014-02-21 16:21:50 · 728 阅读 · 0 评论 -
【隐式图搜索遍历学习】倒牛奶
DFS:#include#include#include#includeusing namespace std;long ans[50], p = -1;long a, b, c; //各桶上限 bool found[50][50][50]; //搜索记录 bool isln(int C) //判断是否原创 2014-02-25 16:53:16 · 1062 阅读 · 0 评论 -
【贪心算法初学】删数问题
题目:键盘输入一个高精度的正整数n(位),去掉任意s个数字后剩下的数字按原左右次序将组成一个新的正整数。编程对给定的n和s,寻找一种方案,使得剩下的数最小。Simple Input 178543 4Simple Output 13 首先:N超过200位,肯定要用字符串数组来进行存储。我们知道字符串数组隐含的'\0'作为结束符。当然,我们也可以用st原创 2014-02-15 13:25:35 · 2248 阅读 · 0 评论 -
【bfs学习】最优程序
#include#include#include#include#include using namespace std;const int MAX_OPT = 100;int opt[MAX_OPT];char opt_name[][5] = { "ADD", "SUB", "SUL", "DIV", "DUP" }; //记录操作名称int a, b;struct no原创 2014-02-19 17:27:10 · 778 阅读 · 0 评论 -
【剑指Offer】- 重建二叉树[Java版]
题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。/** * Created by Joe on 2018/6/6 *//** * Created by Joe on 2018/6/6...原创 2018-06-12 20:24:46 · 349 阅读 · 0 评论