- 博客(22)
- 收藏
- 关注
原创 蚁群优化(ACO)算法与变种
ACO与变种(参考资料)ACO算法基本原理 蚁群算法(Ant Colony Optimization,ACO)是一种基于种群寻优的启发式搜索算法,有意大利学者M.Dorigo等人[6]于1991年首先提出。该算法受到自然界真实蚁群集体在觅食过程中行为的启发,利用真实蚁群通过个体间的信息传递、搜索从蚁穴到食物间的最短路径等集体寻优特征,来解决一些离散系统优化中的困难问题。 经过观察发现,蚂蚁在寻找食物的过程中,会在它所经过的路径上留下一种被称为信息素的化学物质,信息素能够沉积在路径上,并且随着
2021-12-21 13:49:46
1448
1
原创 组合最优化
最优化问题 最优化问题涉及的应用领域很广,问题的种类与性质繁多,归纳起来,可分为函数优化问题和组合优化问题两大类。其中函数最优化问题的解是一定区域内连续取值的量,而组合优化问题的解则是离散取值的量。线性规划问题 首先要确定一组具有明确含义的变量,称之为决策变量。问题的目标是选取这些决策变量的值使得一个函数取得最大值和最小值,此函数称之为目标函数。并且利用决策变量把问题的条件表示成等式或不等式,并称这些等式或不等式为约束条件。如果目标函数是决策变量的线性函数,
2021-12-21 13:42:54
3764
原创 Java中LRU的简单实现
Java中LRU的简单实现LRU(Least Recently Used):全称为最新最少使用算法(或最久未使用算法)。它是一种算法思想:如果一个数据在最近一段时间没有被访问到,那么在将来它被访问的可能性也很小。也就是说,当限定的空间已存满数据时,应当把最久没有被访问到的数据淘汰。这种思想在很多场景中被使用到(操作系统中缓存文件置换机制中将LRU作为一种替换策略),也是面试中的“常客”(leetcode146题:LRU 缓存机制)。简单分析:通过上述介绍,我们很容易理解LRU的核心思想。我们自己实
2021-09-02 13:07:45
1419
原创 python类与继承
介绍与大多数面向对象的编程语言一样,python也是一门面向对象的解释型语言。与C++、Java等语言不同的是:python在面向对象编程时,其语法与其它语言有一定的不同。本次就来对python语言的面向对象编程的一些性质进行简单的探讨。Python类相关介绍:类的创建与继承:class Student:python中定义类使用class关键字+类名的形式定义一个类。与Java相同的是,object类是所有类的基类(所有类默认继承object类)。python使用**(父类名)**的形式.
2021-06-07 14:29:47
352
1
原创 差分数组与区间计数
差分数组在区间计数问题中的应用差分数组定义:给定一个数组A={a1,a2,a3,...,an}A=\{a_1,a_2,a_3,...,a_n\}A={a1,a2,a3,...,an},我们记数组AAA的差分数组为A′A'A′,表示如下:A′={a1,a2−a1,a3−a2,...,an−an−1}A'=\{a_1,a_2-a_1,a_3-a_2,...,a_n-a_{n-1}\}A′={a1,a2−a1,a3−a2,...,an−an−1}显然,对于原数组AAA中的任一元素aia_
2021-05-24 16:45:24
724
原创 博弈论在生活中的应用
关于“菠菜”与博弈论的一点思考关于“菠菜”,大家并不陌生。在博弈中,每个玩家都想下注赢更多的钱,而庄家则希望调整赔率吸引更多的人下注,赚更多的钱。那么从博弈论的角度思考,庄家与玩家在什么情况下可以赚钱呢?我以最常见的赛事下注为例:两支队伍,比赛开始前未知谁输谁赢,比赛结束后一定可以确定谁输谁赢(无平局情况)玩家角度:对于某一玩家而言,仅知道两支队伍的赔率分别为1:a1:a1:a和1:b1:b1:b(a>1,b>1),玩家可以自由下注两支队伍。那么在什么情况下,玩家可以无风险获利呢?
2021-04-27 13:18:35
1345
2
原创 Java深拷贝与浅拷贝
深拷贝与浅拷贝在Java语言中(Python语言类似,可以导入copy包解决),我们对有时候对某一对象进行复制(克隆/拷贝)后发现,对其中某个对象的属性值进行了修改,与之相关的其它对象相应属性也随之变化。实际上,这是因为我们在进行对象克隆过程中,使用的是浅拷贝,也就是两个(或多个)对象引用指向同一个堆中对象实例。相反,深拷贝则是指拷贝的不同对象指向不同的堆中内存实例,因此深拷贝中对某一对象的修改不会影响其它的对象。示例:首先构造两个简单的类,其中Student类中属性字段有Person类的引用,结
2021-04-25 23:38:22
148
原创 特殊数列个数
满足条件的数列个数最近碰到了一个很有意思的题目:给定一个正整数N,要求依次选择1~N这N个数组成一个数列(新选择的数字放在数列末尾),每个数列最开始有元素0。每次选择需要满足两个条件:数列相邻两个数的差不能超过2数列最后一个数必须是N根据输入的N,求最后输出不一样的数列个数例如:给定正整数N=3,满足条件的序列有两种(123/213):当N=4时,情况较为复杂,此时的可能情况有4种(1234/1324/2134):注:红色方块标注违反了两个条件中的一个或多个。通过上面两个例子可以
2021-04-25 20:37:15
218
原创 常用排序总结
排序算法及代码示例我们常见的排序算法主要有选择排序、插入排序、冒泡排序、快速排序、堆排序和归并排序,而掌握这些常用排序算法应该算是每个计算机程序员的必修内功了。我们不仅需要了解其排序思想,更应该能够在不同的场景下举一反三地运用这些排序思想。选择排序:每次从数组中选择最大(小)的数字,并将选择的数字交换至未排序数组前,重复此步骤至最后只剩一个数。import java.util.Arrays;public class ChooseSort { public void choosesort(
2021-04-23 15:48:55
118
原创 Java链式编程(Stream流)
Java链式编程示例java.util.Stream 表示能应用在一组元素上一次执行的操作序列。Stream 操作分为中间操作或者最终操作两种,最终操作返回一特定类型的计算结果,而中间操作返回Stream本身,这样你就可以将多个操作依次串起来。通过Stream中的常用函数Filter(过滤)、Map(映射)、Sort(排序)、**Count(计数)**等常用函数接口,我们可以很方便的对数据流处理,极大地简化编程,提高代码可读性。Filter(过滤):将数据流中满足过滤条件的数据筛选出来Map(映
2021-04-20 17:38:15
1124
2
原创 Java常用数据结构总结
Java常用数据结构简要总结在学习Java编程的过程中,我们往往需要根据具体的场景和功能选用Java工具类中的常用数据结构,如HashMap、HashSet、Vector、ArrayList、LinkedList甚至ConcurrentHashMap等。根据网上资料和Java源码,个人对常用的Java数据结构进行了简要总结,思维导图如下:希望我的总结对你们有帮助,博客中相关问题欢迎询问探讨,相互学习。QQ:1476154032,以上。...
2021-04-19 16:48:06
192
原创 Map排序(Java)
Java中的Map排序问题在Java编写程序的过程中,常常会碰到使用map(key,value)来记录数据的情况,有些时候我们需要根据实际需要来对map中的数据进行排序。以下就是个人总结的map排序的三种情况。1. map中根据key值排序Java中的TreeMap默认是根据key值从小到大排序,当然,在构造函数中可以重写Comparator的compare方法实现key值从大到小排序。 public static void sortByKey() { TreeMap<String
2021-04-17 17:43:13
14798
原创 Java正则表达式使用
正则表达式正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本–百度百科。无论用什么语言编程,在处理字符串的匹配问题上,正则表达式是一个强大的工具。这里不会去介绍正则表达式的语法规则(网上很多,自行搜索即可),而是就一个实际的场景体现Java中如何使用正则表达式。Java使用正则表达式对手机号相关的字符串进行操作代码示例(代码注释超详细~)
2021-04-14 16:12:45
134
1
原创 并查集(代码及详细注释)
并查集及其Java实现并查集,在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中。一般在集合的关系查找中使用较多(两个元素是否属于同一集合)百度百科Java代码以及测试类import java.util.Arrays;import java.util.Scanner;public class UnionSearch { private int[] id; //记录
2021-04-13 13:51:52
306
1
原创 B站视频下载教程
#b站视频下载##方法一:对于需要下载的视频,可以下载bilibili手机客户端,利用手机客户端进行缓存。若是想要获得视频文件,使用手机文件管理,依次找到Android->data->tv.danmaku.bili->download(仅限安卓手机),这里面是缓存文件,如图所示:然后选择你需要的视频的那个缓存,例如我接着点开一个缓存文件夹,如图所示:其中audio是缓存的音频...
2019-11-08 20:40:50
10409
3
原创 TSPLIB数据文件的读取
最近做实验需要用到tsplib上的数据集,实验主要用的就是各个城市坐标和最优路径,但是在做实验前需要将数据文件中的有用信息进行提取,故编写代码专用于tsplib上数据的提取。
2019-09-16 21:42:27
9319
2
原创 c++标准容器基础《string》
c++标准容器基础之string与c语言不同,为了方便字符串的使用,c++标准容器新增了string类,而不再是之前C语言采用字符数组的形式存储字符串,这对于字符串的处理而言更加方便。总体感觉而言,c++中string类的各种函数与java类似,使用时可注意对比。string常用函数#include &lt;iostream&gt;#include &lt;string&gt; //注意...
2019-03-12 17:39:34
237
原创 c++标准容器基础《set》
c++标准容器基础之mapset由一群key组合而成,如果我们想知道某值是否在于某个集合内,就可以使用set,在图的遍历中,可以将已访问过的节点放入set,再向后遍历时可向集合中查询是否已遍历该节点,本程序可统计侮辱性词汇之外的词汇及次数使用set//本程序可统计侮辱性词汇之外的词汇及次数#include <iostream>#include <map>#i...
2019-03-12 17:31:40
247
原创 c++标准容器基础《map》
c++标准容器基础之mapmap实际上在数学概念上是一个映射,在文本统计等方面十分有用。map被定义为一对数值,其中的key通常是个字符串,扮演索引的角色,另一个数值是value,扮演着数学中的key到value的映射使用map#include <map>#include <string>#include <iostream>using namesp...
2019-03-12 17:27:07
171
原创 c++标准容器基础《vector》
c++标准容器基础之vector Vector实际上是Array的加强版,Vector具有许多实用的内置函数,总体比Array方便许多,与普通数组相比最大的特点在于其动态地开辟存储空间,而非像数组一样使用前先提前开辟固定大小的内存空间,对于需要从键盘输入开辟大小的数值时极为方便。vector与array的简单对比#include &lt;iostream&gt;#include &l...
2019-03-12 17:11:49
275
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人