Java
Serendipity_筱楠
当你的才华还撑不起你的野心的时,你就应该静下心来学习;当你的能力还驾驭不了你的目标时,就应该沉下心来历练。
展开
-
冒泡排序(画图分析)
1、定义:算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。2.步骤**:**(1)、从头开始,按照大的排在后面的次序(也可小的排在后面)进行两两交换,假定经过一轮两两交换后,最后一个数字为最大的;(2)、第二次,除最后一个不参与比较之外,其余数字按第一步骤依次进行。(3)、重复上述步骤,...原创 2019-12-08 16:46:20 · 841 阅读 · 0 评论 -
2018蓝桥杯A组:方格计数(3种方法)
四、题目:方格计数如图p1.png所示,在二维平面上有无数个1x1的小方格。我们以某个小方格的一个顶点为圆心画一个半径为1000的圆。你能计算出这个圆里有多少个完整的小方格吗?注意:需要提交的是一个整数,不要填写任何多余内容分析思路:1.以原点为圆心,半径为1000,则x轴范围(-1000,1000),y轴范围(-1000,1000)for(x:-1000~1000)fo...原创 2020-04-24 22:09:36 · 3664 阅读 · 1 评论 -
2018蓝桥杯B组:第几个幸运数字(JAVA/C++)
四、题目:第几个幸运数字到x星球旅行的游客都被发给一个整数,作为游客编号。x星的国王有个怪癖,他只喜欢数字3,5和7。国王规定,游客的编号如果只含有因子:3,5,7,就可以获得一份奖品。我们来看前10个幸运数字是:3 5 7 9 15 21 25 27 35 45因而第11个幸运数字是:49小明领到了一个幸运数字 59084709587505,他去领奖的时候,人家要求他准确地说出这是...原创 2020-04-24 21:21:21 · 433 阅读 · 1 评论 -
2018蓝桥杯B组:猴子分香蕉(C++/JAVA)
二、题目:猴子分香蕉5只猴子是好朋友,在海边的椰子树上睡着了。这期间,有商船把一大堆香蕉忘记在沙滩上离去。第1只猴子醒来,把香蕉均分成5堆,还剩下1个,就吃掉并把自己的一份藏起来继续睡觉。第2只猴子醒来,重新把香蕉均分成5堆,还剩下2个,就吃掉并把自己的一份藏起来继续睡觉。第3只猴子醒来,重新把香蕉均分成5堆,还剩下3个,就吃掉并把自己的一份藏起来继续睡觉。第4只猴子醒来,重新把香蕉均分...原创 2020-04-23 14:46:17 · 1213 阅读 · 0 评论 -
动态规划---01背包问题--Dp(详解附代码)
一、动态规划代表一类问题(最优子结构或子问题最优性)的一般解法,是设计方法或者策略,不是具体算法本质:递推,核心是找到状态转移的方式,写出dp方程。解决问题:交叉,重叠子问题(最优子问题)形式:记忆型递归递推与深搜的区别:深搜要所有符合条件的解,动态规划要求最优解(唯一解)二、题目有n个重量和价值分别为wi和vi的物品,从这些物品中挑选出重量不超过w的物品,求所有挑选方案中价值总...原创 2020-04-19 13:39:17 · 454 阅读 · 0 评论 -
动态规划---01背包问题(2种方法)
一、动态规划代表一类问题(最优子结构或子问题最优性)的一般解法,是设计方法或者策略,不是具体算法本质:递推,核心是找到状态转移的方式,写出dp方程。解决问题:交叉,重叠子问题(最优子问题)形式:记忆型递归递推与深搜的区别:深搜要所有符合条件的解,动态规划要求最优解(唯一解)二、题目有n个重量和价值分别为wi和vi的物品,从这些物品中挑选出重量不超过w的物品,求所有挑选方案中价值总...原创 2020-04-19 11:12:25 · 681 阅读 · 0 评论 -
poj1700快速渡河问题(贪心策略,详细解析)
二、快速渡河问题翻译为中文一队人(N个人)期望跨河,有一条船,一次只能载2个人,过河之后需要有一个人划回来,所有人才能够跨河,每个人划船速度都不同,两个人一组整体速度是由划船速度较慢的决定的。问题:确定一种策略用最少的时间所有人都能过河。输入:方案数:T(1<=T<=20)人数:N<1000速度:<100s输出:最少的时间样例:输入:141 2 ...原创 2020-04-14 19:34:00 · 1760 阅读 · 3 评论 -
硬币支付问题(贪心策略)
一、什么是贪心策略呢?贪心算法是一种递推算法,用局部最优解来推导全局最优解,是对遍历解空间的一种优化当问题具有最优子结构时,可用动态规划,而贪心是动态规划的一种特例特点:只看眼前遵循某种规则,不断(贪心)选取当前最优策略,最终找到最优解。难点:当前最优解未必是整体最优。二、题目:硬币问题有1元,5元,10元,50元,100元,500元的硬币各c1,c5,c10,c50,c1...原创 2020-04-14 17:34:05 · 1185 阅读 · 2 评论 -
字符串匹配之PabinKarp(模式匹配)
一、什么是字符串匹配呢?给定一个母串,再给定一个子串,要在母串中找是否有与子串对应的字符串例如:母串S:ABABAC子串P:BAB方法一:一般做法(时间复杂度很高)利用指针Si和指针Pj作比较如果它们相同就i+1,j+1;如果到某一个地方不同,称为失配。当出现失配,把i退回之前标记的位置向后移动一个i+1的位置,j变为0回到起始点。一直重复上面操作。直到i找到对的位置记为k,k位...原创 2020-04-13 20:39:52 · 388 阅读 · 0 评论 -
子矩阵最大累加和(详解)
题目:给定一个矩阵matrix,其中的值有正,有负,有0,返回子矩阵的最大累加和例:matrix为:-1 -1 -1-1 2 2-1 -1 -1其中最大累加和的子矩阵为2 2所以返回4.分析思路:下面有方框圈出来的类似这种的都是子矩阵刚开始考虑用暴力解法将每一个定点都进行遍历找子矩阵,虽然可行,但是它的时间复杂度会非常高0(n^4)。改进算...原创 2020-04-12 21:27:38 · 1008 阅读 · 0 评论 -
最大子数组累加和(2种方法)
题目:最大子数组累加和给定一个数组arr=[1,-2,3,5,-2,6,-1];所有的子数组中[3,5,-2,6]可以累加出最大的和12,所以返回12什么是子数组,子数组就是在原数组中连续的一段数组序列,必须是连续的。例如:长度为7的子数组有1个,即数组本身。长度为6的子数组有2个,[1,-2,3,5,-2,6];[-2,3,5,-2,6,-1].长度为5的子数组有3个,[1,-2,3,...原创 2020-04-11 20:55:19 · 443 阅读 · 0 评论 -
2019蓝桥杯B组:完全二叉树权值
五、题目:完全二叉树权值给定一棵包含 N 个节点的完全二叉树,树上每个节点都有一个权值,按从 上到下、从左到右的顺序依次是 A1, A2, · · · An现在小明要把相同深度的节点的权值加在一起,他想知道哪个深度的节点 权值之和最大?如果有多个深度的权值和同为最大,请你输出其中最小的深度。注:根的深度是 1。输入:第一行包含一个整数 N。 第二行包含N个整数A1,A2,··· An。...原创 2020-04-04 22:06:17 · 622 阅读 · 0 评论 -
最小可用ID(4种方法,详细讲解)
三、最小可用ID:在非负数组(乱序)中找到最小的可分配的id(从1开始编号),数据量1000000原创 2020-02-23 15:48:37 · 1596 阅读 · 5 评论 -
经典排序:第k个元素(快排和双向扫描法)
一、第k个元素:以尽量高的效率求出一个乱序数组中按数值顺序的第k个元素乱序数组法一:利用快速排序,算法时间复杂度O(Nlogn)法二:利用分区排序法(双向扫描法)依次与主元比较,比主元大的排在右面不变,比主元小的指针交换位置,得到如下数组伪代码selectk(A,p,r,k){ q=partition(A,p,r); //q主元的下标 qk=q-p+1; //主元是...原创 2020-02-22 21:51:51 · 313 阅读 · 0 评论 -
归并排序(数组指针详细讲解,图例分析)
归并排序思路:依照分治模式分解:将n个元素分成各含n/2个元素的子序列;解决:对两个子序列递归地排序合并:合并两个已排序的序列的子序列以得到排序结果和快排区别:归并的分解较为随意,重点是合并...原创 2020-02-21 21:43:03 · 492 阅读 · 0 评论 -
分治法:快排划分法(单向扫描法)
一、分治法将一个规模较大的问题转化为多个相同形式小规模的子问题,子问题规模较小时,可自然求解。子问题的解可通过合并得到原问题的解。举例:小明让小张和小李去借2000元,小张借1000,小李借1000,他们各自向朋友去借,这就是一个分治问题二、一遍单向扫描法:思路:用两个指针将数组划分为三个区间。扫描指针左边是确认小于等于主元的。扫描指针右边是确认大于主元的...原创 2020-02-20 13:00:48 · 830 阅读 · 0 评论 -
在有空字符串的有序字符串数组中查找(找给定字符串)
题目:在有空字符串的有序字符串数组中查找有个排序后的字符串数组,其中散步一些空字符串,编写一个方法,找出给定字符串(肯定不是空字符串)的索引。package zifusearch;public class Chuan { public static void main(String[] args) { String[] arr= {"a","","ac","ad","b","","...原创 2020-02-19 21:37:44 · 393 阅读 · 0 评论 -
递归法:财务金额漏掉1笔或者几笔(排列组合)
问题:某财务部门结账时发现金额不对,很可能是从明细上漏掉了一笔或者几笔,如果已知明细账目清单,能通过编程找到漏掉的是哪1笔或者几笔吗?如果有多种可能,则输出所有可能的情况我们规定,用户输入的第一行是:有错的总金额。接下来是一个整数n,所有可能漏掉的金额组合,每个情况1行,金额按照从小到大排列,中间用空间分开比如:用户输入:6532431表明:有错的总金额是6,明细共有5笔...原创 2020-02-14 10:42:24 · 174 阅读 · 0 评论 -
递归法:整数划分问题(怎么进行划分呢)
问题:整数划分问题例如,正整数6有如下11种划分:6;5+1;4+2,4+1+1;3+3,3+2+1,3+1+1+1;2+2+2,2+2+1+1,2+1+1+1+1;1+1+1+1+1+1;代码:package zhf;public class Zhf { public static void f(int n,int[] a,int k) { //数组a用来存放分解之后的元...原创 2020-02-13 21:20:27 · 321 阅读 · 0 评论 -
递归法:计算m个A,n个B可以组合成多少种排列问题?
问题:计算m个A,n个B可以组合成多少种排列问题?假设:计算3个A,2个B可以组合成多少种排列问题?举例:AAABB BABAA…方法:采取分割思想将第一个与后面的分开,划分为两部分,变得好解决第一个字母为A时f(m-1,n)第一个字母为B时f(m,n-1)package pailie;public class Pai { public static int f(in...原创 2020-02-13 19:51:55 · 2956 阅读 · 0 评论 -
递归法:杨辉三角,计算第m层的第n个系数
(a+b)的n次幂的展开式中各项系数有规律,对于n=2,3,4时分别为1 2 1,1 3 3 1,1 4 6 4 1,如下图当把上面的图片经过转化后变为11 11 2 11 3 3 11 4 4 6 11 5 10 5 1找到规律:第一层1个元素,第2层两个元素,第n层有n个元素第3...原创 2020-02-12 20:17:15 · 826 阅读 · 0 评论 -
递归法:反转串
反转串:把"abc"经过反转变为“cba”,这样的串称为反转串。package fanzhuanchuan;public class Chuan { public static String f(String s) { if(s.length()<=1) //当字符串到只剩一个或者空串的时候,打印输出结果 return s; return f(s.substrin...原创 2020-02-12 19:38:37 · 162 阅读 · 0 评论 -
递归法:求n个元素的全排列
问题:求n个元素的全排列举例:ABC 其全排列有ABC ACB BAC BCA CAB CBApublic class Quan { public static void f(char[] data,int k) //k为当前需要交换元素的位置,与它后面的元素交换 { if(k==data.length) { //当k交换到最后一个元素的位置时,打印输出结果 for(...原创 2020-02-11 22:57:44 · 4399 阅读 · 0 评论 -
递归法:求两个串的最大公共子序列的长度
问题:求两个串的最大公共子序列的长度举例:子串: abcgxs 与sabxfh 其最大公共子序列的为abx,长度为3public class Zixulie { public static int f(String s1,String s2) //定义两个串 { if(s1.length()==0 || s2.length()==0) //如果两个串的长度度为0...原创 2020-02-11 22:29:46 · 275 阅读 · 0 评论 -
雇员类(JAVA实现简单的类)
编写一个Java程序片段,定义表示雇员的类Employee。雇员的属性包括雇员号、姓名、性别、部门、职位。方法包括设置雇员号、设置姓名、设置性别、设置部门、、设置职位以及获取雇员号、获取姓名、获取性别、获取部门、获取职位。5.为习题4中的类Employee增加一个方法public String toString(),该方法把Employee类的对象的所有属性信,组合成一个字符串以便输出显示,...原创 2019-11-10 09:27:17 · 3290 阅读 · 0 评论 -
抽象类及继承(本科生和研究生类)
应用抽象类及继承编写程序。输出本科生及研究生的成绩等级。要求:首先设计抽象类student,它包含学生的一些基本信息,包括:姓名、学生类型、三门课程的成绩和成绩的等级等;其次,设计student类的两个子类------本科生类Understudent和研究生类Poststudent,二者在计算成绩等级时有区别,具体见下表,最后创建测试类进行测试//抽象类Studentabstract cla...原创 2019-11-01 19:51:02 · 3602 阅读 · 0 评论 -
学生类的继承
假定根据学生的3门学位课程的分数决定其是否可以拿到学位,对于本科生,如果三门课程的平均分数超过60分即表示通过;而对于研究生则需要三门课程平均分数超过80分才能通过。根据上述要求,使用类的继承及相关机制完成以下设计1.设计一个基类Student描述学生的共同特征2.设计一个描述本科生的类Undergraduate,该类继承并扩展Student类3.设计一个描述研究生的类Graduate,该...原创 2019-10-25 19:22:35 · 4994 阅读 · 5 评论 -
用java编写一个学生类
我是一个Java初学者,请求哪位大神能够指点一下,下面代码错误的地方怎么改?非常感谢。题目:定义一个表示学生的类Student。这个类的属性有“学号”、“班号”、“姓名”、“性别”、“年龄”,方法有“获得学号”、“获得班号”、“获得性别”、“获得姓名”、“获得年龄”。 public class Student{ private int xh,code,age; private Strin...原创 2019-09-29 09:03:07 · 15981 阅读 · 6 评论