
算法
文章平均质量分 73
文如王勃三生慧
这个作者很懒,什么都没留下…
展开
-
查找算法及查找常用数据结构总结
每一个结点分支数≤m;根结点分支数≥2(要求此根结点不为叶子结点);其余分支结点的分支数≥ m/2;所有叶子结点在同一层;每一个结点的结构如下:满足A0K1A1KmAmA0K1A1...KmAm,其中Ai表示其中的所有关键字;原创 2024-03-31 12:42:23 · 1105 阅读 · 2 评论 -
贷款计算器的简单实现(C++)
1. 等额本金当月还款 = (当前未还总额)*(月化利率) + (固定每月还款本金)例如,借款12万元,分12期还,年化利率为6%(月化利率为0.5%)那么固定每月还款本金为1万元,利息为:a_1 = 120000*0.5\% + 10000 = 10600a_2 = 110000*0.5\% + 10000= 10550a_3 = 100000*0.5\% + 10000= 105...原创 2019-03-03 23:29:54 · 5000 阅读 · 0 评论 -
排列组合算法总结(基于C++实现)
1.排列全排列n!1.1 递归法设一组数p = {r1, r2, r3, … ,rn}, 全排列为perm(p),pn = p – {rn}。则perm(p) = r1perm(p1), r2perm(p2), r3perm(p3), … , rnperm(pn)。当n = 1时perm(p} = r1。如:求{1, 2, 3, 4, 5}的全排列1、首先看最后两个数4, ...原创 2018-03-06 00:19:05 · 40495 阅读 · 7 评论 -
LeetCode之Coin Change 和 Coin Change 2
1.Coin ChangeLeeCode链接:https://leetcode.com/problems/coin-change/description/你有不同面额的硬币和总金额。写一个函数来计算你所需要的最少的硬币数。如果这笔钱不能由硬币的任何组合构成,则返回-1。Example 1:coins = [1, 2, 5], amount = 11return 3 (11 = ...原创 2018-03-03 20:16:21 · 938 阅读 · 0 评论 -
遍历二叉树总结
1.递归遍历struct bnode{ char data; struct bnode *lchild,*rchild;};typedef bnode* bitre;//递归先序遍历void PreOrderRec(bitre root){ cout << root->data; PreOrderRec(root->lchild); PreOrder原创 2018-03-08 00:24:15 · 295 阅读 · 0 评论 -
常见排序算法总结(基于C++实现)
主流排序算法总结,插入排序、希尔排序、冒泡排序、快速排序、直接选择排序、树形选择排序、归并排序;原创 2018-01-16 18:30:37 · 3711 阅读 · 1 评论 -
镜像树(XCOJ 1214)
问题描述:一棵二叉树,若其与自己的镜像完全相同,就称其为镜像树(即这棵二叉树关于根完全对称)。例如是一棵镜像树;而不是镜像树。现给你一棵二叉树,请你判断其是不是镜像树。输入:第一行是一个整数数T,表示测试数据有多少组每组数据第一行是一个正整数n(1下面n行,每行有三个正整数a b c(1=1(保证数据中给出的二叉树拓扑结构是合法的原创 2016-01-14 20:34:40 · 895 阅读 · 0 评论 -
字符串匹配(暴力匹配)
题目描述:给定一个目标串str和模式串ptr,要求寻找ptr第一次在str出现的位置,并返回其下标,匹配不到则返回-1。暴力匹配(Brute force)暴力匹配的思路很简单,开始时用模式串ptr从匹配串str的第一个字符开始向后匹配,当出现不同字符时,从匹配串str的下一个字符开始重新匹配,即原搜索位置+1开始重新匹配。代码如下:原创 2017-05-22 00:02:26 · 824 阅读 · 0 评论 -
字符串匹配(Boyer-Mooer 算法)
题目描述: 给定一个目标串str和模式串ptr,要求寻找ptr第一次在str出现的位置,并返回其下标,匹配不到则返回-1。1. 算法思想 在当前用于查找子字符串的算法中,BM(Boyer-Moore)算法是当前有效且应用比较广的一中算法,各种文本编辑器的“查找”功能(Ctrl+F),大多采用Boyer-Moore算法。比KMP算法快3~5原创 2017-05-23 00:03:36 · 827 阅读 · 1 评论 -
字符串匹配(KMP算法)
题目描述:给定一个目标串str和模式串ptr,要求寻找ptr第一次在str出现的位置,并返回其下标,匹配不到则返回-1。1. 算法思想显然暴力算法的时间复杂度比较高,那么为了简化时间复杂度:需要充分利用模式串ptr的性质(比如里面部分字符串的重复性,即使不存在重复字段,在比较时,实现最大的移动量)。考察模式串ptr:ababaca 这里我们要计算一个长度为模式原创 2017-05-22 00:03:04 · 494 阅读 · 0 评论 -
大规模优化算法 - LBFGS算法
L-BFGS算法比较适合在大规模的数值计算中,具备牛顿法收敛速度快的特点,但不需要牛顿法那样存储Hesse矩阵,因此节省了大量的空间以及计算资源。本文主要通过对于无约束最优化问题的一些常用算法总结,一步步的理解L-BFGS算法,本文按照最速下降法 - 牛顿法 - 共轭梯度法 - 拟牛顿法 - DFP矫正 - BFGS 矫正 - LBFGS算法这样一个顺序进行概述。(读了一些文章之后,深感数学功转载 2016-12-20 18:34:17 · 1067 阅读 · 0 评论 -
回溯法经典问题-八皇后
题目描述:会下国际象棋的人都很清楚:皇后可以在横、竖、斜线上不限步数地吃掉其他棋子。如何将8个皇后放在棋盘上(有8 * 8个方格),使它们谁也不能被吃掉!这就是著名的八皇后问题。 对于某个满足要求的8皇后的摆放方法,定义一个皇后串a与之对应,即a=b1b2...b8,其中bi为相应摆法中第i行皇后所处的列数。已经知道8皇后问题一共有92组解(即92个不同的皇后串)。给出一个数b,要原创 2016-09-10 22:15:14 · 599 阅读 · 0 评论 -
数据结构专题——线段树
线段树转载请注明出处,谢谢!http://blog.youkuaiyun.com/metalseed/article/details/8039326 持续更新中···一:线段树基本概念1:概述线段树,类似区间树,是一个完全二叉树,它在各个节点保存一条线段(数组中的一段子数组),主要用于高效解决连续区间的动态查询问题,由于二叉结构的特性,它基本能保持每个操转载 2016-01-17 21:50:23 · 421 阅读 · 0 评论 -
合并石子问题研究与实现
一、简单情况(1)问题描述有N堆石子,现要将石子有序的合并成一堆,规定如下:每次只能移动任意的2堆石子合并,合并花费为新合成的一堆石子的数量。求将这N堆石子合并成一堆的总花费最小(或最大)(2)分析由于每次可以选择任意的两堆,所以可以选择贪心算法,一种简单的思路是使用sort方法排序之后每次数组的前两位相加即可。(3)代码略。二、原创 2015-06-28 10:27:11 · 2041 阅读 · 1 评论