算法
文章平均质量分 83
weijifen000
这个作者很懒,什么都没留下…
展开
-
《数据结构与算法之美》笔记之 栈
浏览器前进和后退功能特定的数据结构是对特定场景的抽象。某个数据集只涉及在一端插入和删除,并后进先出,就该选栈。如何实现栈顺序栈链式栈public class ArrayStack{ private String[] items; private int count; private int n; public ArrayStack(int n){...原创 2020-01-06 22:52:11 · 136 阅读 · 0 评论 -
《数据结构与算法之美》笔记之 堆及其应用
文章目录一、定义二、如何实现一个堆存储堆堆的基本操作插入元素删除堆顶元素三、堆排序1.建堆2. 排序3. 堆排序的缺点堆的应用优先队列求TOP K利用堆求中位数堆排序时间复杂度:O(nlogn)O(n\log n)O(nlogn)一、定义定义只有两条:堆是一个完全二叉树;除了最后一层外,其它节点都是满的,最后一层节点全部靠左排列,完全二叉树非常适合使用数组存储堆中每一个节点的值都...原创 2020-01-06 22:48:09 · 189 阅读 · 0 评论 -
UVa1363 约瑟夫的数论问题
输入正整数n和k(1≤n,k≤10^9),计算以k为被除数,i为除数(i从1取到n),所得余数的和 。原创 2018-09-18 17:37:35 · 186 阅读 · 0 评论 -
在C或C++中如何使用PI(π)值
#include <math.h>#define PI acos(-1)主要是利用利用数学函数中的反三角函数,但是要注意一定引入math包 arccos(−1)=πarccos(−1)=π\arccos(-1)=\pi完整示例://#define LOCAL#include <iostream>#include <stdio.h>原创 2018-09-13 17:25:08 · 136401 阅读 · 6 评论 -
UVa11440 Help Tomisu
给定正整数 N 和 M ,统计 2 和 N!之间有多少个整数 x 满足: x 的所有素因子都大于 M。输出答案除以 100000007 的余数。例如, N=100 , M=10 时答案为 43274465 。原创 2018-09-19 17:54:16 · 262 阅读 · 0 评论 -
UVa10213 多少块土地
这是一个有关拓扑学的算法问题。有一块椭圆形的地。在边界上选n个点并两两连接得到n(n-1)/2条线段。它们最多能把地分成多少个部分?原创 2018-09-14 23:05:58 · 606 阅读 · 1 评论 -
复杂状态的动态规划
本文为该书的笔记:刘汝佳. 算法竞赛入门经典.第2版[M]. 清华大学出版社, 2014. 最优配对问题 空间里有 nnn 个点 P0,P1,…,Pn−1P0,P1,…,Pn−1P_0, P_1, … , P_{n-1} ,你的任务是把它们配成 n/2n/2n/2 对( nnn 是偶数),使得每个点恰好在一个点对中。所有点对中两点的距离之和应尽量小。 n ≤ 20, |xi|,|y...原创 2018-03-18 10:04:33 · 283 阅读 · 0 评论 -
《计算方法》笔记之(四)线性代数方程组之 线性代数方程组解的可靠性
解线性代数方程组之后解的可靠性的检验方式原创 2018-10-02 23:21:25 · 647 阅读 · 0 评论 -
《计算方法》笔记之(五)线性代数方程组之 解线性方程组的迭代法
主要讲述Jacobi 迭代和Gauss-Seidel 迭代及其收敛性问题原创 2018-10-03 14:43:38 · 636 阅读 · 0 评论 -
letcode 11.Container With Most Water(最大容器)
给定n(n≥2n\ge 2n≥2)个非负整数a1,a2,...,ana_1,a_2,...,a_na1,a2,...,an,其中每一个代表一个坐标点(i,ai)(i,a_i)(i,ai),绘制n条垂线,使得线的两个端点为(i,ai)(i,a_i)(i,ai)和(i,0)(i,0)(i,0)。找到两条线,使得这两条线和x轴所形成的容器能乘最多的水。如下图所示:Given n non-n...原创 2018-10-03 22:43:34 · 152 阅读 · 0 评论 -
《数据结构与算法之美》笔记之复杂度分析
本文为极客时间《数据结构与算法之美》专栏的笔记文章目录为什么需要复杂度分析大O 复杂度表示法几种常见的时间复杂度案例分析:非多项式量级指数阶 $O(n^2)$阶乘阶 O(n!)多项式量级O(1)对数阶 O(logn)、 O(nlogn)O(m+n)、 O(m*n)空间复杂度最好、最坏情况时间复杂度平均情况时间复杂度均摊时间复杂度为什么需要复杂度分析我们实际项目中很多时候要由测试人员测试其性能...原创 2018-09-29 10:28:03 · 349 阅读 · 0 评论 -
[LeetCode]41.缺失的第一个正数
题目描述给定一个未排序的整数数组,找出其中没有出现的最小的正整数。示例 1:输入: [1,2,0]输出: 3示例 2:输入: [3,4,-1,1]输出: 2示例 3:输入: [7,8,9,11,12]输出: 1说明:你的算法的时间复杂度应为O(n),并且只能使用常数级别的空间。分析:常数级别的空间,也就是说只能用数组原有的空间加上O(1)的空间复杂度。可...原创 2019-09-07 19:43:37 · 135 阅读 · 0 评论 -
数学期望
讲述算法中常用到的数学期望相关知识点及其典型例题原创 2018-09-10 22:06:26 · 3293 阅读 · 0 评论 -
UVa1640 统计问题
给出整数a、b,统计a和b(包含a和b)之间的整数中,数字0,1,2,3,4,5,6,7,8,9分别出现了多少次。1≤a,b≤$10^8$ 。注意,a有可能大于b。原创 2018-09-12 19:57:12 · 456 阅读 · 0 评论 -
线性结构上的动态规划--算法竞赛入门经典笔记
本文为该书的笔记:刘汝佳. 算法竞赛入门经典.第2版[M]. 清华大学出版社, 2014. 动态规划的思想:从复杂的题目背景中抽象出状态表示,然后设计它们之间的转移。 最长上升子序列问题(LTS)题目链接 状态: d(i)d(i)d(i) 表示以 iii 为结尾的最长上升子序列的长度(即 AiAiA_i 必定为为子序列的最后一个)。 则状态传递函数为: d(i)=max{0...原创 2018-03-18 10:01:41 · 184 阅读 · 0 评论 -
DAG上动态规划——巴比伦塔问题
有n种立方体,每种都有无穷多个,要求选一些立方体摞成一根尽量高的柱子,可以自行选一边当多高,使得每个立方体的底面长宽分别严格小于它下方的立方体的底面长宽。 题目链接这个问题可以转化为一个DAG问题,与矩形嵌套问题类似。 转化过程:将一个给定的立方体分为三个分别以不同的边为高的立方体,假如给定立方体为(1,2,3)(1,2,3)(1,2,3),分成以第一个数为高的三个立方体:(...原创 2018-03-18 10:20:21 · 483 阅读 · 2 评论 -
Android使用GridView实现俄罗斯方块(附源码)(三)
GitHub地址: https://github.com/weijifen/AndroidTetris 移动方向移动方向包括左移,右移和下移。 移动方块实际是对position向量做改变,改变之后使用handler进行渲染:/* 将正在下落的方块与停止下落的方块区别对待 */for ( int i = 0; i < ySize; i++ ){ if (...原创 2018-04-07 19:33:29 · 1923 阅读 · 0 评论 -
Android使用GridView实现俄罗斯方块(附源码)(四)
GitHub地址: https://github.com/weijifen/AndroidTetris 行满判定与处理如果方块的移动是下移,则handler.sendEmptyMessage(0), 这是先判断可否下移. 如何判断可否向下移动一位? 先向下移动一位,如果没有出界或者与已经固定的方块重复,则渲染移动之后的结果,如果出界或者重复,则移回原来的位置,停止移动,将移...原创 2018-04-07 22:27:31 · 1724 阅读 · 3 评论 -
Android使用GridView实现俄罗斯方块(附源码)(一)
具体效果如下图: GitHub地址: https://github.com/weijifen/AndroidTetris 主要思路: 由于俄罗斯方块的主体部分是由一个个方格组成的,结合Android中有一个GridView网格视图,使用GridView不需要自己画view,可以把主要的精力放在游戏逻辑上面。项目文件框架图: 其中StateFang里面包括方块的形状,颜色...原创 2018-04-02 11:43:26 · 6895 阅读 · 17 评论 -
Android使用GridView实现俄罗斯方块(附源码)(二)
GitHub地址: https://github.com/weijifen/AndroidTetris 方块生成方块需要随机生成,所以使用随机数发生器产生随机数作为查询方块形状数组的下标。random = new Random();rand = random.nextInt( 19 );使用StateFang.shape[rand][i]就可以找到该形状方块...原创 2018-04-04 16:23:13 · 3279 阅读 · 4 评论 -
字符串最短编辑距离问题
问题: 设 A 和 B 是两个字符串。我们要用最少的字符操作次数,将字符串 A 转换为字符串 B 。这里所说的字符操作共有三种: 1. 删除一个字符; 2. 插入一个字符; 3. 将一个字符改为另一个字符。 对任给的两个字符串 A 和 B ,计算出将字符串 A 变换为字符串 B 所用的最少字符操作次数。样例:2bcodeqwrtybdq...原创 2018-06-22 17:50:41 · 3258 阅读 · 0 评论 -
对组合数递推式的思考
组合数递推式为: Ckn=n−k+1kCk−1nCnk=n−k+1kCnk−1C_n^k=\frac {n-k+1} k C_n^{k-1} 它可以很明显的用组合数公式证明,但是它的“实际意义”却并不明显。为了更好的理解该公式,本文对该公式进行解释。为了更好理解,我们写出组合数递推式的等价形式: Ck+1n=n−kk+1CknCnk+1=n−kk+1CnkC_n^{k+1}=\fr...原创 2018-06-14 23:13:21 · 1141 阅读 · 0 评论 -
UVa1635 无关的元素
UVa1635 无关的元素 对于给定的 n 个数 a1, a2, … , an ,依次求出相邻两数之和,将得到一个新数列。重复上述操作,最后结果将变成一个数。问这个数除以 m 的余数与哪些数无关?例如 n=3 , m=2 时,第一次求和得到 a1+a2 , a2+a3 ,再求和得到 a1+2a2+a3 ,它除以 2 的余数和 a2 无关。 1 ≤ n ≤ 105 , 2 ≤ m ≤ 10...原创 2018-06-15 11:37:43 · 133 阅读 · 0 评论 -
C++ 词频统计与齐普夫定律
使用C++统计英语四六级考试词频,并且利用所统计的词频验证齐普夫定律原创 2018-07-29 16:56:23 · 979 阅读 · 0 评论 -
UVa11181 条件概率
UVa11181 条件概率 有 nnn 个人准备去超市逛,其中第 iii 个人买东西的概率是 PiPiP _i 。逛完以后你得知有 rrr 个人买了东西。根据这一信息,请计算每个人实际买了东西的概率。输入 nnn ( 1 ≤ nnn ≤ 20 )和 rrr ( 0 ≤ rrr ≤ n ),输出每个人实际买了东西的概率。 –刘汝佳《算法竞赛入门经典(第二版)》样例: S...原创 2018-08-27 17:04:02 · 168 阅读 · 0 评论 -
UVa1637 纸牌游戏
UVa1637 纸牌游戏 36张牌分成9堆,每堆4张牌。每次可以拿走某两堆顶部的牌,但需要点数相同。如果有 多种拿法则等概率的随机拿。例如,9堆顶部的牌分别为KS, KH, KD, 9H, 8S, 8D, 7C, 7D, 6H,则有5种拿法(KS,KH), (KS,KD), (KH,KD), (8S,8D), (7C,7D),每种拿法的概率均为1/5。 如果最后拿完所有牌...原创 2018-08-31 22:21:41 · 319 阅读 · 0 评论 -
算法之递推
动态规划的计算方法主要有三种: 1. 递归计算(有大量重复计算) 2. 递推计算(需要注意边界处理和状态转移方程) 3. 记忆化搜索递推的重点在于 1. 找到对于状态的参数描述 2. 找到状态转移方程,而寻找状态转移方程的重点在于分类 3. 找到边界条件UVa580 危险的组合 有一些装有铀(用 U 表示)和铅(用 L 表示)的盒子,数量均足够多。要求把 n ( n ≤...原创 2018-09-03 22:28:47 · 621 阅读 · 0 评论 -
连续概率
算法中关于连续概率的典型例题原创 2018-09-12 11:30:24 · 981 阅读 · 2 评论 -
动态规划初步--算法竞赛入门经典笔记
本文为该书的笔记:刘汝佳. 算法竞赛入门经典.第2版[M]. 清华大学出版社, 2014.动态规划是一种思想,一种手段,而不是算法。需要理解它的基本思路和特点。学习目标理解状态和状态转移方程 理解最优子结构和重叠子问题 熟练运用递推法和记忆化搜索求解数字三角形问题 熟悉 DAG上动态规划的常见思路、两种状态定义方法和刷表法 掌握记忆化搜索在实现方面的注意事项 ...原创 2018-03-18 10:00:28 · 375 阅读 · 0 评论