Loading

随笔分类 -  算法----------

摘要:题意: 有几个比较坑的地方总结一下, 很容易误解: 遇到 就必须走 不消耗时间 对面如果也是 也不能走, 要不然无限循环了 最短路径剪枝时, 发现不能走的 是要把两步都标注为 1并跳出 题解: 一道经典的DFS+剪枝的题目, 这道题数据量过百了(大致范围), 直接裸的DFS+回溯是过不去滴, 必须要 阅读全文
posted @ 2020-05-02 20:57 RioTian 阅读(171) 评论(0) 推荐(0)
摘要:"题目链接" 题意:问区间[n,m]中,不含数字4,也不含数字串“62”的所有数的个数。 思路:可以转化成求区间[0,x] 第一次接触数位dp,参考了这几篇博客。 "不要62(数位dp)解题报告" "解题报告2" "解题报告3" 比较重要的前提: ¨对于一个小于n的数,肯定是从高位到低位出现某一位 阅读全文
posted @ 2020-04-30 13:40 RioTian 阅读(325) 评论(0) 推荐(0)
摘要:Problem Description 小兔的叔叔从外面旅游回来给她带来了一个礼物,小兔高兴地跑回自己的房间,拆开一看是一个棋盘,小兔有所失望。不过没过几天发现了棋盘的好玩之处。从起点(0,0)走到终点(n,n)的最短路径数是C(2n,n),现在小兔又想如果不穿越对角线(但可接触对角线上的格点),这 阅读全文
posted @ 2020-04-30 11:55 RioTian 阅读(569) 评论(0) 推荐(0)
摘要:Problem Description 有一群人,打乒乓球比赛,两两捉对撕杀,每两个人之间最多打一场比赛。 球赛的规则如下: 如果A打败了B,B又打败了C,而A与C之间没有进行过比赛,那么就认定,A一定能打败C。 如果A打败了B,B又打败了C,而且,C又打败了A,那么A、B、C三者都不可能成为冠军。 阅读全文
posted @ 2020-04-26 13:10 RioTian 阅读(209) 评论(0) 推荐(0)
摘要:Pow(x, n) 方法一:暴力法 方法二:递归快速幂算法 方法三:迭代快速幂算法 方法四:位运算法 方法一:暴力法 思路 只需模拟将 相乘 次的过程。 如果 $n 1 来逐位读取 1101,为1时将该位代表的乘数累乘到最终结果。直接看代码吧,反而容易理解: 时间复杂度近为 $O(logn)$,而且 阅读全文
posted @ 2020-04-16 16:04 RioTian 阅读(2417) 评论(0) 推荐(0)
摘要:爬楼梯 [TOC] 摘要 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 解决方案 方法 1:暴力法 算法 在暴力法中,我们将会把所有可能爬的阶数进行组合,也就是 1 和 2 。而在每一步中我们都会继续调用 $climbStai 阅读全文
posted @ 2020-04-16 14:59 RioTian 阅读(2553) 评论(0) 推荐(0)
摘要:假设以下情景,有一块木板,板上钉上了一些钉子,这些钉子可以由一些细绳连接起来。假设每个钉子可以通过一根或者多根细绳连接起来,那么一定存在这样的情况,即用最少的细绳把所有钉子连接起来。 更为实际的情景是这样的情况,在某地分布着N个村庄,现在需要在N个村庄之间修路,每个村庄之前的距离不同,问怎么修最短的 阅读全文
posted @ 2020-04-14 16:40 RioTian 阅读(17343) 评论(1) 推荐(5)
摘要:此篇文章转载自刘毅学长,部分内容按博主理解进行修改 一:背景 给定一个主串(以 S 代替)和模式串(以 P 代替),要求找出 P 在 S 中出现的位置,此即串的模式匹配问题。 Knuth-Morris-Pratt 算法(简称 KMP)是解决这一问题的常用算法之一,这个算法是由高德纳(Donald E 阅读全文
posted @ 2020-04-12 18:46 RioTian 阅读(2870) 评论(0) 推荐(2)
摘要:"首先关于Trie树的知识在另一篇文章中有介绍" 题目描述: 小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编程的学习道路上一同前进。 这一天,他们遇到了一本词典,于是小Hi就向小Ho提出了那个经典的问题:“小Ho,你能不能对于每一个我给出的字符串, 阅读全文
posted @ 2020-04-12 18:30 RioTian 阅读(199) 评论(0) 推荐(1)
摘要:汉诺塔介绍: 汉诺塔 (港台: 河内塔 )是根据一个传说形成的数学问题: 最早发明这个问题的人是 "法国" "数学家" "爱德华·卢卡斯" 。 传说越南河内某间寺院有三根银棒,上串 64 个金盘。寺院里的僧侣依照一个古老的预言,以上述规则移动这些盘子;预言说当这些盘子移动完毕,世界就会灭亡。这个传说 阅读全文
posted @ 2020-04-12 11:37 RioTian 阅读(1600) 评论(0) 推荐(1)
摘要:给你两个二进制字符串,返回它们的和(用二进制表示)。 输入为 非空 字符串且只包含数字 1 和 0。 示例 1: 示例 2: 提示: 每个字符串仅由字符 '0' 或 '1' 组成。 1 字符串如果不是 "0" ,就都不含前导零。 阅读全文
posted @ 2020-04-08 11:43 RioTian 阅读(174) 评论(0) 推荐(0)
摘要:今天是算法和数据结构专题的第1篇文章,我们一起来聊聊动态规划的最小编辑距离。 概述 最小编辑距离(Minimum Edit Distance)本身是的一个NLP中的一个概念,最小编辑距离旨在定义两个字符串之间的相似度(word similarity)。定义相似度可以用于拼写纠错,计算生物学上的序列比 阅读全文
posted @ 2020-04-06 10:29 RioTian 阅读(1655) 评论(0) 推荐(3)
摘要:原地算法(in place algorithm) 在计算机科学中,一个 原地算法(in place algorithm) 基本上不需要额外辅助的数据结构,然而,允许少量额外的辅助变量来转换数据的算法。当算法运行时,输入的数据通常会被要输出的部分覆盖掉。不是原地算法有时候称为 非原地(not in p 阅读全文
posted @ 2020-04-02 16:50 RioTian 阅读(1924) 评论(0) 推荐(1)
摘要:记录dalao的位运算骚操作 根据百度百科 ,生命游戏,简称为生命,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机。 给定一个包含 m × n 个格子的面板,每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态:1 即为活细胞(live),或 0 即为死细胞(dead)。每个细胞 阅读全文
posted @ 2020-04-02 16:28 RioTian 阅读(326) 评论(0) 推荐(0)
摘要:冒泡排序(BubbleSort) **基本思想:**两个数比较大小,较大的数下沉,较小的数冒起来。 过程: 比较相邻的两个数据,如果第二个数小,就交换位置。 从后向前两两比较,一直到比较最前两个数据。最终最小数被交换到起始的位置,这样第一个最小数的位置就排好了。 继续重复上述过程,依次将第2.3.. 阅读全文
posted @ 2020-04-01 11:13 RioTian
摘要:Dijkstra 算法是处理单源最短路径的有效算法,但它对存在负权回路的图就会失效。这时候,就需要使用其他的算法来应对这个问题,Bellman Ford(中文名:贝尔曼 福特)算法就是其中一个。 Bellman Ford 算法不仅可以求出最短路径,也可以检测负权回路的问题。该算法由美国数学家理查德• 阅读全文
posted @ 2020-03-30 12:04 RioTian 阅读(553) 评论(0) 推荐(1)
摘要:Dijkstra 算法(中文名:迪杰斯特拉算法)是由荷兰计算机科学家 Edsger Wybe Dijkstra 提出。该算法常用于路由算法或者作为其他图算法的一个子模块。举例来说,如果图中的顶点表示城市,而边上的权重表示城市间开车行经的距离,该算法可以用来找到两个城市之间的最短路径。 算法过程 我们 阅读全文
posted @ 2020-03-30 11:54 RioTian 阅读(1122) 评论(0) 推荐(0)
摘要:给定一个有 N 个顶点和 E 条边的无向图,请用DFS和BFS分别列出其所有的连通集。假设顶点从0到 N −1编号。进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序访问邻接点。 输入格式: 输入第1行给出2个整数 N (0 using namespace std; define MAX 阅读全文
posted @ 2020-03-26 19:15 RioTian 阅读(316) 评论(0) 推荐(0)
摘要:编写一个程序,找到两个单链表相交的起始节点。 如下面的两个链表 : " " 在节点 c1 开始相交。 示例 1: " " 示例 2: " " 示例 3: " " 注意: 如果两个链表没有交点,返回 . 在返回结果后,两个链表仍须保持原有的结构。 可假定整个链表结构中没有循环。 程序尽量满足 O( n 阅读全文
posted @ 2020-03-20 20:34 RioTian 阅读(114) 评论(0) 推荐(0)