自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 问答 (1)
  • 收藏
  • 关注

原创 proto_gen.exe无法正常根据proto文件生成go文件

项目中利用proto_gen.exe根据proto文件生成go文件的流程:项目会去E:\code\go/bin目录中寻找protoc-gen-go.exe文件来执行操作。解决方案:1)由于proto_gen.exe的版本太过高,需要再proto文件中显性指定go文件生成的路径(option go_package)具体流程:option go_package = "path;name"; path 表示生成的go文件的存放地址,会自动生成目录的。name 表示生成的go文件所属的包名2)

2021-06-22 14:55:43 338

原创 问题--go拉取公司内部包某些包拉取不到(https,ssl)

情况:利用go mod tidy去拉取go镜像https://goproxy.cn中的包的时候是正常的,但是在拉取公司内部的公共包的时候就出错了。分析:虽然在env中配置了GOPRIVATE和GOPROXY,但是在拉取go镜像中的包的时候是用的https拉取,导致在拉取公司内部的某些公共包的时候采用了的URL也变成https://gitlab.dianchu.cc/,即也通过https来拉取。而公司内部的某些公共包不支持采用https来拉取。解决方案:执行下面语句:..

2021-05-12 14:14:21 810

原创 十进制数转化为二进制数(小于和大于2*31-1)

/** * 十进制数转换成二进制数分为俩种情况: 1)输入的数小于2*31-1 2)输入的数大于2*31-1 */import java.util.Scanner;public class Main { public static void main(String[] args) { System.out.println("请输入一个小于2*31-1的十进制数"); Scanner scanner = new Scanner(System.in);

2020-08-24 16:27:06 539

原创 Manacher马拉车算法——最长回文子串

1)基础计算字符串的最长回文字串最简单的算法就是枚举该字符串的每一个子串,并且判断这个子串是否为回文串,这个算法的时间复杂度为O(n3)的,而稍微优化的一个算法是枚举回文串的中点(动态规划),这里要分为两种情况,一种是回文串长度是奇数的情况,另一种是回文串长度是偶数的情况,枚举中点再判断是否是回文串,这样能把算法的时间复杂度降为O(n2),但数据大的话,依然让人无法满意,这时Manacher(谐...

2020-04-02 21:12:42 161

原创 动态规划--最长回文子串

1)问题描述就是找一个字符串中的最长回文子串。2)基本思路首先最简单的方法,暴力穷举所有的子串,穷举法总的时间复杂度为O(n^3).很显然,暴力算法在运行效率上是极低的。主要原因是其存在着大量重复的判断。所以我们用以下的方法来优化。3)代码实现 /** * 动态规划的方法求解最长回文子串 * @param s * @return */ private stati...

2020-03-31 22:28:42 124

原创 动态规划--流水作业调度(2台机器)

1)问题描述n个作业 N={1,2,…,n}要在2台机器M1和M2组成的流水线上完成加工。每个作业须先在M1上加工,然后在M2上加工。M1和M2加工作业 i 所需的时间分别为 ai 和bi,每台机器同一时间最多只能执行一个作业。流水作业调度问题要求确定这n个作业的最优加工顺序,使得所有作业在两台机器上都加工完成所需最少时间。2)基本思路最优调度应该是(如何推导省略):使M1上的加工是无...

2020-02-06 01:28:15 2353 1

原创 分治法--排序--非基于比较的排序--桶排序(计数排序,基数排序)

1)计数排序:2)基数排序基数排序基本用不到。

2020-02-05 03:00:30 484

原创 分治法--排序--基于比较的排序--堆排序

1)问题描述就是将一个无序的数组弄成有序的。2)基本思路3)代码实现public class Code_03_HeapSort { public static void heapSort(int[] arr) { if (arr == null || arr.length < 2) { return; } for (int i = 0; i < arr...

2020-02-05 02:19:44 830

原创 分治法--排序--基于比较的排序--归并排序

1)问题描述就是把一个无序的数组弄成有序的。2)基本思路就是把一个无序的数组递归得分解成只有一个元素的数组,这样这个只有一个元素的数组就是有序的,然后再有序得合并起来。3)代码package laoya;import java.util.Arrays;import java.util.Scanner;public class test { /* 把一个数组弄成有序的 当分解...

2020-02-05 02:10:14 119

原创 分治法--排序--基于比较的排序--快速排序

1)问题描述就是把一个无序的数组弄成有序的。2)基本思路快速排序分为经典快排和随机快排。1 经典快排:利用最后一个数作为分界点,小的放左边,大的放右边,可以使用荷兰国旗问题(文末)的方法优化。2 随机快排:产生一个随机位置,然后和最后一个数交换,然后在进行划分。【随机排序相较于经典排序的进步:当大于的一边的数据量大,而小于的那边数据量少的话经典排序的算法就差了,所以有了随机排序。】...

2020-02-05 02:05:12 253

原创 分治法--排序--基于比较的排序--直接插入排序

1)问题描述就是把一个无序的数组弄成有序。2)基本思路就是把后面无序的数组插到前面去,直到所有都插入。3)代码实现package laoya;import java.util.Arrays;public class nihao { public static void main(String[] args) { int[] arr = {8,4,3,7,1,5,6,2};...

2020-02-05 01:55:36 423 2

原创 分治法--排序--基于比较的排序--直接选择排序

1)问题描述就是把一个无序的数组弄成有序的。2)基本思路就是把数组的第一个元素先当成最小的,然后循环找后面其他元素的最小的,和数组的第一个元素比较,如果比第一个元素小那么就交换,然后+1往后求。3)代码实现package laoya;import java.util.Arrays;public class nihao { public static void main(Strin...

2020-02-05 01:50:36 488

原创 分治法--排序--基于比较的排序--冒泡排序

1)问题描述把一个无序的数组弄成有序的。2)基本思路就是从左到右俩个俩个比较,最后最大的一定会出现在最右边,以这个思想往左排。3)代码实现package laoya;import java.lang.Math;import java.util.Arrays;import java.util.Scanner;public class test { public static vo...

2020-02-05 01:42:01 1038

原创 分治法--排序(简介)

基于比较的排序:时间复杂度是O (nlogn) :随机快排,堆排序,合并排序时间复杂度是O (n*2): 经典快排,冒泡排序,直接选择,直接插入非基于比较的排序:计数排序,桶排序,基数排序...

2020-02-05 01:36:41 535

原创 分治法--一维最接近点对问题

1)问题描述2)基本思路3)代码实现package hello;import java.util.ArrayList;import java.util.Collections;import java.util.List;import java.util.Scanner;public class fuck { public static void main(String...

2020-02-01 21:07:14 1629

原创 分治法--循环赛日程表

1)问题描述问题:设有n=2^k个选手参加循环赛,要求设计一个满足以下要求比赛日程表:1)每个选手必须与其它n-1个选手各赛一次; 2)每个选手一天只能赛一次。3)比赛一共进行n-1天。2)基本思路就是在填下面这个表:3)代码实现public void fun(int matrix[][],int n) { int i; int j; if...

2020-02-01 20:36:53 1386

原创 分治法--棋盘覆盖

1)问题描述就是一个棋盘中有一个方格被覆盖成黑色了,其他都是白色,我们要把除了那个黑色方格外的其他白色方格覆盖成黑色。2)基本思路就是把棋盘不断地分割成4个,覆盖不包含黑色方格的其他3个,这样不断覆盖下去。3)代码实现package test;import java.util.Arrays;import java.util.Scanner;public class laoya {...

2020-02-01 20:29:15 303

原创 分治法--Strassen矩阵乘法

1)问题描述就是将俩个正方形矩阵进行相乘,本来直接3个for就可以完成,但是由于时间复杂度的问题改进成了Strassen方法。2)基本思路就是用Strassen方法将矩阵进行分解,然后递归求。3)代码实现package laoya;import java.lang.Math;import java.util.Arrays;import java.util.Scanner;pu...

2020-02-01 20:15:29 1101

原创 分治法--大整数的乘法

1)问题描述就是整数太大了,超出了计算机能够按传统计算方式计算的范围。2)基本思路就是递归地将大整数分为俩个小整数,然后分解到只剩下一位数的时候再按传统方式计算。3)代码实现package laoya;import java.lang.Math;import java.util.Arrays;import java.util.Scanner;public class test {...

2020-02-01 15:54:51 925

原创 分治法--线性时间选择

1)问题描述给定一个无序集和一个数k,找这个无序集中第k小的数。2)基本思路思路就是将无序集排序,然后从左到右第k个就是答案了。问题就是如何排序,最优的排序方式就是找到无序集的中位数,然后利用该中位数进行快排,递归下去就ok。而如何找到中位数?把所有的无序集分成每5个一组,找到每组的中位数,然后把每组的中位数排列成一个新的集合,然后该集合的中位数就是整个无序集的中位数。...

2020-02-01 15:18:54 514

原创 分治法--二分搜索技术

1)问题描述在已经排好序的n个元素中找出一个特定的元素x。2)基本思路一直对半分,和中间的数作比较来找。3)代码实现package test;import java.util.Arrays;import java.util.Scanner;public class laoya { public static int binarySearch(int []a , int x , i...

2020-01-27 14:28:59 346

原创 动态规划--0-1背包问题

1)问题描述2)基本思路3)代码实现import java.util.HashSet;import java.util.Scanner;import java.util.Set;public class example { static int w[] = {0, 2,3,4,5 };//商品的体积2、3、4、5 static int v[] = {0,3,4,...

2020-01-26 18:41:08 152

原创 动态规划--图像压缩

1)问题描述2)基本思路 3)代码实现import java.util.Scanner;public class example { /** * * @param n 图像灰度数组的大小 * @param p 图像灰度数组 * @param s s[i]表示从0到i压缩为一共占多少存储空间 * @param l l代表l...

2020-01-26 17:59:25 1355

原创 动态规划--最优二叉搜索树

1)问题描述利用最优二叉搜索树来实现树的搜索代价最小。树上的每一个节点都有一个被搜索到的概率值pi,搜索一个节点的花费为pi∗(depth(ki)+1),如何构造一个二叉查找树使搜索树上的 所有节点的花费最小即为实现最优二叉查找树的问题。该问题可以用动态规划的思路实现。形式化定义:给定n个不同关键字已经排序的序列K=(k1,k2,…,kn)因此(k1<k2<k3<…<k...

2020-01-26 15:22:53 565

原创 动态规划--多边形游戏

1)问题描述多边形游戏是一个单人玩的游戏,开始时有一个由n个顶点构成的多边形。每个顶点被赋予一个整数值,每条边被赋予一个运算符+或*。所有边依次用整数从1到n编号,游戏第1步,将一条边删除。随后n-1步按以下方式操作:(1)选择一条边E以及由E连接着的两个顶点V1和V2;(2)用一个新的顶点取代边E以及由E连接着的两个顶点V1和V2。将由顶点V1和V2 的整数值通过边E上的运算得到的结果赋...

2020-01-26 14:28:10 635

原创 动态规划--凸多边形最优三角剖分

(1)问题描述就是把一个n边凸多边形划分成全都化成三角形(n-2),然后算所有三角形的周长加起来总的最小的(公共弦得重复计算)。(2)基本思路最小的大凸多边形等于 “左子多边形的最小” + “右子多边形的最小” + “中间的三角形”;以此递归下去。(3)代码实现public class fuck { private int n; // n凸多边形的边长 privat...

2020-01-24 20:47:46 1246

原创 动态规划--电路布线

这个问题和最长公共子序列的道理一样。只是改了输入。 char []x ={'1','2','3','4','5'}; char []y = {'4','2','5','1','3'}; 【x数组表示的上面的接线柱,y数组表示的是1号接线柱接到了4号接线柱…】...

2020-01-24 20:25:14 115

原创 动态规划--最长公共子序列(LCS)

(1)问题描述求俩个数组S1和S2的最长公子序列。(2)基本思路(3)代码实现public class fuck { public static void main(String[] args) { char []x = {'A','B','C','B','D','A','B'}; char []y = {'B','D','C','A','B',...

2020-01-24 19:54:21 190

原创 动态规划--矩阵连乘

1)问题描述有几个可以连乘的矩阵,求乘的先后顺序,可以使得时间复杂度最小。2)基本思路:一套矩阵的连乘等于 “左边半套矩阵的连乘” 乘以 “右边半套矩阵的连乘” ,(遍历找到最优的断开点),以此递归到只是剩下俩个矩阵或一个矩阵。3)代码实现输入:int p[] = { 30, 35, 15, 5, 10, 20, 25 };意思就是说第一个矩阵的size是30 * 35,第二个是...

2020-01-22 22:36:49 737

原创 递归法

递归法:1)定义:递归就是自己调用自己。2)另外:能不用递归就不要用递归,因为递归其实就是系统为你压栈了,系统会把所有的东西都压栈(不管你用不用得到),所以造成了递归耗内存。可以用循环来代替递归,自己实现压栈,压入自己需要用到的东西就好。3)如何计算递归的时间复杂度4)例子:(1)问题描述:求全排列。(2)基本思路:就是第一层perm固定了第一个元素arr[0],第二层...

2020-01-21 17:47:34 224

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除