算法
Eureka_Yi
努力学习ing.
展开
-
可以处理负权的单源最短路径的SPFA算法带图详解(自己画的图)
算法大致流程是用一个队列来进行维护。 初始时将源加入队列。 每次从队列中取出一个元素,并对所有与他相邻的点进行松弛,若某个相邻的点松弛成功,则将其入队。 直到队列为空时算法结束。这个算法,简单的说就是队列优化的bellman-ford,利用了每个点不会更新次数太多的特点发明的此算法SPFA——Shortest Path Faster Algorithm,它可以在O(kE)的时间复杂度内原创 2013-11-05 19:15:13 · 2134 阅读 · 2 评论 -
经典的八数码问题
问题描述:在一个3*3的方棋盘上放置着1,2,3,4,5,6,7,8八个数码,每个数码占一格,且有一个空格。这些数码可以在棋盘上移动,其移动规则是:与空格相邻的数码方格可以移入空格。现在的问题是:对于指定的初始棋局和目标棋局,给出数码的移动序列。该问题称八数码难题或者重排九宫问题。原创 2014-01-04 20:34:38 · 2793 阅读 · 0 评论 -
关于大数相乘的一个简单算法。
前不久在UVAOJ上遇到一个大数相乘的题目,以前都只是遇到简单的大数相加,看到这道题的第一想法就是从后面向前乘,存储每一次相乘得出的结果,最后相加,实现起来非常麻烦,而且容易出错,后来查了下相关的算法,发现网上有一个很简洁的大数相乘的算法,从前往后处理,代码如下: string s1,s2; while(cin>>s1>>s2) { if(s1=="0"||s2==原创 2013-08-14 15:59:44 · 1658 阅读 · 1 评论 -
[leetcode]Binary Tree Postorder Traversal&&Binary Tree Preorder Traversal
题意:给出了一颗二叉树,求二叉树的前序遍历和后序遍历,题中要求尽量使用非递归方法遍历后序遍历递归代码:/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : va原创 2014-04-20 19:32:51 · 1156 阅读 · 0 评论 -
[leetcode]单链表插入排序
给出一个单向链表,只有表头,使用插入排序的方法给他排序,被这道题磨了好久,不熟悉单链表以及指针,还是需要多多练习struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {}};ListNode *insertionSortList(ListNode *head)原创 2014-04-20 14:34:33 · 1586 阅读 · 0 评论