
算法
文章平均质量分 80
helloworddm
这个作者很懒,什么都没留下…
展开
-
再说圆的面积
取(0,1)* (0,1)区间,也就是单位圆第一象限的端点区间对应的正方形区间。下面是计算机给出的结果:很显然第一象限的面积是1/4单位圆面积,即Π/4。这里使用最小标椎生成器算法生成随机数。代码中(ux,uy) = (ui, ui+1)。介绍微积分方法求解圆的面积,本文使用蒙特卡洛方法求解圆面积。更多内容,欢迎关注我的微信公众号:半夏之夜的无情剑客。从上面的结果来看,第一种方法的效果更好一点。本文使用蒙特卡洛方法对圆面积进行求解。运行结果:0.785573。运行结果:0.786203。原创 2024-08-25 22:32:39 · 326 阅读 · 0 评论 -
画图像解方程系列-FPI
工程中很多时候是无法求出精确解的或者精确解很难求出来。这个时候就需要数值计算来提高求解精度。理想气体状态方程PV=nRT,这个与实际方程式有差距的,不过我们可以根据PV=nRT来获取与真实值接近的初始V,然后带入实际的状态方程,不断迭代来获取到精度很高的的真实体积V。原创 2024-08-02 17:32:02 · 447 阅读 · 0 评论 -
函数图像是如何画出来的(LiveCharts2)
高中的时候,如果老师能把这些东西画出来,展现在我们面前,也许能更加有助于我们理解很多函数的特性。指数函数,高斯函数,椭圆方程,双曲线方程等等都可以画出来的,直观的图像给人的感受真的不一样。用python的话比C#简单好多,思路大同小异,都是有限元的思想,差分取值,只要两点差的足够小,就足够逼近原函数。这里说到了函数,就说说这段时间的姜萍事件吧。原创 2024-07-26 11:26:15 · 984 阅读 · 0 评论 -
再次讨论下π
我想古人发现π的存在应该和牛顿发现万有引力定律差不多。在拥有大量的圆周长和直径的数据集的情况下,古人惊讶的发现圆的周长和直径(2r)成正比,而这个比例系数是一个定值,于是人们为了方便,就给这个数起了一个名字,叫做π。于是古人开始研究π的性质,直到现在,依然在继续。很多其他的数学符号也是这么来的,仅仅是为了表示的方便才有的比如ln,比如e,比如sin等。更多内容,原创 2024-03-01 11:51:40 · 487 阅读 · 0 评论 -
两点间直线最短不是公理!!!
根据弧长公式,很容易证明圆的周长是2πR,这个后续会进行证明。欧拉-拉格朗日方程的证明是非常复杂的,后续会出专门的文章来详细说明整个过程。现在我们已经证明的两点之间直线最短,那么两点之间是走直线最快吗?这就是著名的最速下降问题。更多内容,欢迎关注我的微信公众号:半夏之夜的无情剑客。原创 2024-02-18 14:06:44 · 3042 阅读 · 0 评论 -
微积分-圆的面积和周长(1)
不得不感叹,祖冲之的有如何的毅力才能将π的取值范围精确到3.1415926到3.1415927之间。就目前6核i7处理器来计算这个都需要小1min的时间,那在祖冲之那个年代来计算这个得需要花费多大的精力可想而知。向先贤致敬。接下来会使用微积分来证明这个圆的面积是如何积分出来的。更多内容,欢迎关注我的微信公众号: 半夏之夜的无情剑客。原创 2023-12-04 11:18:57 · 1611 阅读 · 0 评论 -
HTTPS系列之密码学基础--RSA算法
温故知新在 HTTPS系列之密码学基础–证书及签名 文章中对证书和签名进行了简单的介绍。核心在讲述下面的内容:公钥加密,私钥解密。私钥签名,公钥验证。本文将通过RSA算法来对实践一下。RAS算法概念RSA算法是一种非对称加密算法,在公开密钥加密和电子商务中被广泛使用。RSA是由Ron Rivest、Adi Shamir、Leonard Adleman在1997你年一起提出来的。RSA是他们三人姓氏开头字母拼在一起组成的。安全性大质数做因式分解困难。理论证明有兴趣可以查看维基百科。公私钥生.原创 2021-11-06 16:57:38 · 249 阅读 · 0 评论 -
全盘扫描是怎么实现的
在疯狂java讲义习题11.1使用Java语言列出了指定目录的所有文件。这里使用C#来实现同样的功能,使用递归和非递归两种方式。基于文件遍历,实现类似everything的功能以及grep功能。C#微软出品,必属精品。C#和Java谁更好是一个一直存在的问题。怎么说那,如果一定要选择一个的话,我选择C#,因为.NET平台的架构是Java无法比拟的(能否最终实现,还要看微软了)。.NET架构:.NET5的架构:Ubuntu下C#开发使用的IDE是MonoDevelop(https://ww.原创 2021-05-30 11:19:16 · 706 阅读 · 0 评论 -
神经网络学习之Ndarray对象和CNN入门(2)
在神经网络学习之Ndarray对象和CNN入门 中,主要介绍了Ndarray维度的概念和CNN的大体流程图,本文基于此介绍Ndarray中比较重要的一个函数stack函数的使用以及numpy中的广播Stack函数numpy.stack(arrays, axis=0, out=None)[source]Join a sequence of arrays along a new axis.The axis parameter specifies the index of the new axis in原创 2021-04-07 22:43:41 · 280 阅读 · 2 评论 -
神经网络学习之导数
在神经网络中,有一个常用的激活函数sigmoid函数,这个函数在高等数学中应该是有的,只是当时没有理会。函数图像如下,本文主要主要梳理下相应的数学知识,具体的应用在后续的文章中会涉及。本文涉及到数学公式,基本都是大学课本或者高中课本里的,有兴趣的一起来回忆下。传说一个公式能少一个粉丝,但是那也没有办法,神经网络离不开数学,有兴趣的请坚持看下去,虽然有点无聊,但是也许你能了解些新的知识。导数定义导数(Derivative),也叫导函数值。又名微商,是微积分中的重要基础概念。当函数y=f(x)的自变原创 2021-02-28 20:19:16 · 649 阅读 · 0 评论 -
汉诺塔问题-到底需要多少时间
学过计算机的基本都对汉诺塔问题很熟悉了,即使没有学过计算机的的,想必也或多或少的了解汉诺塔问题,这篇文章通过数学的方式来求解这个问题。汉诺塔传说: 在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔。不论白天黑夜,总有一个僧侣在按照下面的法则移动这些金片:一次只移动一片,不管在哪根针上,小片必须在大片上面。僧侣们预言,当所有的金片都从梵天穿好的那根针上移到另外一根针上时,世界就将在原创 2021-02-21 10:01:05 · 7375 阅读 · 0 评论 -
神经网络学习之Ndarray对象
人类和蚂蚁人类和蚂蚁应该是理解维度很好的参照,对人类而言,世界是三维的,而对于蚂蚁来说,世界是二位的,让蚂蚁来理解三维的东西肯定不好理解,让人类类理解高于三维的东西,那必然也不容易理解,但Ndarray对象居然可以是任意的维度,其实现本质上基于的是多维数组。Jupyter(1)通过官网安装,anaconda官网: https://anaconda.org/(2)通过conda install jupyter来安装Jupyter。 Conda真是一个好东西,用上它就会爱上它,现在我基本不用pip来安装原创 2021-02-09 22:20:47 · 284 阅读 · 1 评论 -
神经网络学习之矩阵
矩阵大一的时候学习的吧,忘记了,感觉很久远了,我以为毕业之后再也用不到了,直到我了解了神经网络。以下内容是百科的解释:在数学中,矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合,最早来自于方程组的系数及常数所构成的方阵。这一概念由19世纪英国数学家凯利首先提出。如下是一个m*n的矩阵。[a11a12⋯a1na21a22⋯a2n⋮⋮⋱⋮am1am2⋯amn]\begin{bmatrix}{a_{11}}&{a_{12}}&{\cdots}&{a_{1n}}\\{原创 2021-02-05 00:07:08 · 1435 阅读 · 0 评论 -
Android逆向之ARM64
在使用Radare2静态分析apk(2)末尾出有一段ARM64汇编代码,这篇文章铜鼓分析这段汇编代码来来了解下ARM64汇编。1. 开辟堆栈空间`sub sp, sp, 0x70`2. 存在一对数据 `stp x29, x30, [var_60h]`3. x29与[var_60h]相加 `add x29, var_60h`4. 不知道做什么的指令 `mrs x8, tpidr_el0`5. 将x8+0x28内存中的值加载到x8寄存器 `ldr x8, [x8, 0x28] `完整的代码原创 2020-12-06 00:53:52 · 1360 阅读 · 0 评论 -
求N个数的最大公约数
B、 有若干根长短不一的木材,工人需要将这些木材分割成一样长的小段,编写一个算法计算最少能分割出多少段。 输入:第一行N,表示木材的数量 第二行N个整数代表N个木材的长度 输出:分割后的段数 样例: Input: 3 3 6 9 Output: 6 这道题本质上是求多个数的最大公约数,先求两个的,再依次求下去。代码如下:(用List有点问题)import java.util.Ar原创 2017-08-24 22:43:06 · 4089 阅读 · 0 评论 -
再拾算法考题
有股神吗? 有,小赛就是! 经过严密的计算,小赛买了一支股票,他知道从他买股票的那天开始,股票会有以下变化:第一天不变,以后涨一天,跌一天,涨两天,跌一天,涨三天,跌一天…依此类推。 为方便计算,假设每次涨和跌皆为1,股票初始单价也为1,请计算买股票的第n天每股股票值多少钱? 代码如下:(太久没做数学题了,表示智商貌似下降了,看来的多做些数学题了)import java.util.Scann原创 2017-08-21 22:25:42 · 581 阅读 · 0 评论 -
网易实习生笔试题:二叉树
题目描述: 有一棵二叉树,树上每个点标有权值,权值各不相同,请设计一个算法算出权值最大的叶节点到权值最小的叶节点的距离。二叉树每条边的距离为1,一个节点经过多少条边到达另一个节点为这两个节点之间的距离。 给定二叉树的根节点root,请返回所求距离。class Tree { void Inorder(TreeNode *root,vector<int>&v,int &small,int &原创 2016-07-23 09:00:59 · 472 阅读 · 0 评论 -
杨氏矩阵
行和列分别递增的矩阵有一个专有名词叫杨氏矩阵,是由剑桥大学数学家杨表在1900年提出的,而在这个矩阵的查找俗称杨氏矩阵的查找。 定位法:时间复杂度是O(m+n)#include<iostream>using namespace std;#define M 4#define N 4bool find(int a[][N],int value)//注意这里的参数传递,貌似只能这样写 int a原创 2016-07-16 20:40:08 · 515 阅读 · 0 评论 -
动态规划(1)最大连续字数组乘积
问题描述: 给定一个浮点数数组,任意取出数组中的若干个连续的数相乘,请找出其中乘积最大的子数组。 动态规划: 概念:动态规划一般用来求解最优化问题,其适用的条件是要求待求解的最优化问题具备两个因素:最优子结构和子问题重叠。通过求解一个个最优子问题,将解存入一张表中,当后续子问题的求解需要用到之前子问题的解时直接查表,每次查表的代价为常数时间。 分析本题: 乘积子数组中可能有正数,负数,也可原创 2016-07-18 15:23:45 · 1641 阅读 · 0 评论 -
动态规划(2)字符串编辑距离
题目描述: 给定一个源串和目标串,能够对源串进行如下操作: 1)在任意位置插入一个字符 2)替换任意字符 3)删除任意字符 写一个程序,实现返回最小操作次数,使得对源串进行上述这些操作后等于目标串(源串和目标串的长度都小于2000),这就是字符串编辑距离问题: 百度百科定义: 编辑距离(Edit Distance),又称Leven原创 2016-07-19 08:57:03 · 631 阅读 · 0 评论 -
动态规划(3)格子取数问题
问题描述: 有n*n个格子,每个格子里有正数或者0,从最左上角往右下角走。一共走2次,(即从左上角走到右下角走两次),把所有经过的格子里的数加起来,求总和的最大值。如果两次经过同一个格子,则最后求得的总和中该格子中的数只加一次。 思路: 避免“不顾全局,只看局部”(貌似叫贪心) 动态规划保证全局最优。 代码如下:const int N = 202;const int inf原创 2016-07-19 15:05:40 · 862 阅读 · 0 评论 -
动态规划(5)求数组中最长递增子序列
写一个时间复杂度尽可能低的程序,求一个数组中(N个元素)中最长递增子序列的长度。#include<stdio.h>#include<stdlib.h>int Max(int a[],int n){// int n = sizeof(a) int max = a[0]; int i = 0; for (i = 1;i < n;i++) { if原创 2016-07-19 19:12:18 · 872 阅读 · 0 评论 -
动态规划(4)交替字符串
题目描述: 输入三个字符串s1,s2,s3,判断第3个字符串是否由前两个字符串s1和s2错而成且不改变s1和s2中各个字符的原有的相对顺序。原创 2016-07-19 15:10:28 · 543 阅读 · 0 评论 -
矩阵原地转置,空间复杂度为O(1)(暂时先保存下来)
#include<iostream>using namespace std; /* 后继 */int getNext(int i, int m, int n){ return (i%n)*m + i/n;} /* 前驱 */int getPre(int i, int m, int n){ return (i%m)*n + i/m;} /* 处理以下标i为起点转载 2016-07-20 16:01:25 · 1630 阅读 · 0 评论 -
字符串的全排列与组合
题目描述: 输入一个字符串,打印出该字符串中字符的所有排列。 基本思路: 从字符串中选出一个字符作为排列的第一个字符,然后对剩余的字符进行全排列,如此递归,从而得到所有字符的全排列。以对字符”abc”进行全排列为例,可以按下述步骤执行: 将a固定在第一位,求后面bc的排列 将b固定在第一位,求后面ac的排列 将c固定在第一位,求后面ab的排列#in原创 2016-07-20 19:10:45 · 4403 阅读 · 0 评论 -
函数对象
定义一种将函数作为参数传递的独创方法是注意到对象既包含数据也包含方法,于是我们可以定义一个没有数据而只有一个方法的类,并传递该类的一个实例。事实上,一个函数通过将其放在一个对象内部而被传递,这样的对象通常叫做传递对象。给人的感觉有点像函数式接口,只是后者可以有常量定义。貌似与C语言的函数指针差不多。示例代码package burnigT;import java.util.Comparator;cl原创 2017-08-19 23:23:20 · 239 阅读 · 0 评论 -
链表
单链表的反向打印: 点击(此处)折叠或打开 void printReverse(ListNode *p) { assert(p != NULL); while (p->next != NULL)原创 2017-08-06 18:18:19 · 265 阅读 · 0 评论 -
定制排序的一个例子
各种原理还不是很懂。先上代码:(下午研究下)import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.Scanner;import antlr.collections.List;public class Main{ public static原创 2017-08-25 09:54:19 · 427 阅读 · 0 评论 -
特殊序列点的坐标
C、 有形如以下布局的一组数据,给定一个整数N,计算N在如下数形的第几行第几个, 1 3 2 4 5 6 10 9 8 7 这里关键是开方运算,保证精度。确定每行其实元素的坐标。 代码如下:Author:Burning原创 2017-08-25 08:20:15 · 424 阅读 · 0 评论 -
字符串反转
字符串反转。(I am a students->students a am I) 基本思路(1)单词单个反转 (2)整体反转 c++代码实现:includeincludeusing namespace std; class ReverseString { private: string *s; void rever原创 2016-06-19 10:14:48 · 1199 阅读 · 1 评论 -
网易实习生笔试试题 求第K大的数
有一个整数数组,请你根据快速排序的思路,找出数组中第K大的数。 给定一个整数数组a,同时给定它的大小n和要找的K(K在1到n之间),请返回第K大的数,保证答案存在。 代码如下:#include<stdio.h>#include<stdlib.h>#define swap(t,x,y) (t = (x),x = (y),y = (t))int partition(int *a,int lo,i原创 2016-07-22 15:29:34 · 754 阅读 · 0 评论