- 博客(44)
- 收藏
- 关注
原创 汇编的简单学习
汇编的由来 本来的时候,计算机只能识别010101数字,然后可以通过二极管的开和关表示0、1,但是这样和计算机交互非常困难,所以就将所有操作简化成助记词,也就是汇编语言# 加法 INC --> 经过汇编编译器 转换成计算机01指令 # 减法 DEC# 乘法 MUL# 除法 DIV进制进制?1进制:一进一,结绳记事 1 12进制:二进一, 0 1 0 11 计算机8进制:八进一 8个符号组成:0 1 2 3 4 5 6 710进制:10进一 10个符号组成
2021-11-05 09:13:43
537
原创 strictfp关键字和clone()方法
strictfp 关键字<strict float point (精确浮点)>1.可以用在哪里接口类方法2.有什么作用?使用 strictfp 关键字声明一个方法时,该方法中所有的float和double表达式都严格遵守FP-strict的限制,符合IEEE-754规范。当对一个类或接口使用 strictfp 关键字时,该类中的所有代码,包括嵌套类型中的初始设定值和代码,都将严格地进行计算。严格约束意味着所有表达式的结果都必须是 IEEE 754 算法对操作数预期的结果,以单精
2021-09-24 11:27:11
242
原创 Java的GUI图形化
Frame窗口package swing;import java.awt.*;public class TestFrame { public static void main(String[] args) { //构造函数设置标题 Frame frame = new Frame("第一个窗口"); //设置可见性 frame.setVisible(true); //设置窗口大小 宽 高 fra
2021-07-05 17:58:30
304
原创 Java稀疏数组
稀疏数组当使用二维数组储存数据的时候,可能会占用大量空间而实际存储的数据只占一小部分那么就可以使用压缩技术,将二维数组变小,稀疏数组例如:可以创建一个[sum+1][3]的数组二维数组来存储,sum是有效元素个数代码演示:package tets;import java.util.Arrays;public class Main { static int[][] n = new int[11][11]; public static void main(String
2021-07-01 20:55:43
93
原创 Java位运算的使用(持续更新...)
以下数字都使用byte(1字节,8b)示例&(与)&可以给两位数字进行与运算例如:3 & 4 = 0 3:0000 0011 4:0000 0100 ------------- 0000 0000 也就是说,&运算,会将两个数的二进制每一位来进行比较 如果都是1,那么就是1,否则都是0|(或)|和&的原理是相反的例如:3 | 4 = 7 3:0000 0011 4:0000 0100 ------
2021-07-01 16:00:10
116
原创 计算机的常用Dos(Disk Operating System)命令以及Java的Dos命令
计算机常用的Dos命令切换盘符 C盘进入D盘 1) 直接写 D: 2) cd /d D:切换目录cd /d D:\test\a // cd 是 change directory 缩写显示当前目录下的所有文件dir //dir --> directory 缩写清除屏幕cls // 是 clear screen 的缩写退出命令窗口exit查看电脑IPipconfig打开电脑计算器、画图工具、笔记本1) calc //打开计算机
2021-06-30 16:55:09
143
原创 Java 区间合并
区间合并1.将所有区间按照左端点从小到大排序,这里使用的是List接口里的sort方法,并重写排序规则2.每两个区间有三种状态:完全包含、部分包含、不包含,如果是不包含就res++,另外两种就取右端点大的数为标记点【例题:】给定 n 个区间 [li,ri],要求合并所有有交集的区间。注意如果在端点处相交,也算有交集。输出合并完成后的区间个数。例如:[1,3]和[2,6]可以合并为一个区间[1,6]。输入格式第一行包含整数n。接下来n行,每行包含两个整数 l 和 r。输出格式共一行,包
2021-02-17 13:08:12
909
2
原创 Java离散化原理及实现
离散化当一个数组中的长度很短,但是每个数却非常大,那么就可以使用离散化进行映射关系例如有一个数组[50,500,900,1500,20000,320000,540000],我们可以找到映射关系来储存这个数组以及对数组的值进行操作1.先将数组进行去重和排序,从小到大2.再利用去重排序过的数组下标来将每一个数映射到新的容器里3.b[] = {1,2,3,4,5,6,7} 是储存原数组的映射数组4.可以通过映射关系来操作数组【例题:】假定有一个无限长的数轴,数轴上每个坐标上的数都是0。现在,我们
2021-02-10 20:03:13
1567
4
原创 Java 位运算简单使用
求n的二进制第k位是公式:n >> k & 1 ,k从0开始代表第几位public class Main { public static void main(String[] args) { // 求10的二进制数 for (int i = 3; i >= 0; i--) { System.out.print(10 >> i & 1); } }}n & -n
2021-02-10 14:44:06
150
3
原创 Java 双指针算法
双指针双指针在快速排序中和归并排序中,以及二分法中…都已经用到了,原理就是创建两个变量当做指向标点,然后通过单调性的规律来使两个指针移动,最终找到方案或答案。例题来进一步了解双指针【例题1:】给定一个长度为n的整数序列,请找出最长的不包含重复的数的连续区间,输出它的长度。输入格式第一行包含整数n。第二行包含n个整数(均在0~100000范围内),表示整数序列。输出格式共一行,包含一个整数,表示最长的不包含重复的数的连续区间的长度。数据范围1≤n≤100000输入样例:51 2 2
2021-02-09 21:35:01
681
1
原创 Java 差分(矩阵)
一维差分在一个数组中,例如1,2,3,4,5,6,我们想在指定区间都加上或减上一个数的话,比如在区间[2,4]都加上25,那么你就便利数组区间在2-4的下标,然后统一加上25。但是如果这个数组足够长呢,现在要给数组添加n组数字,或者减去,并且还有n个不一样的区间,这样计算量就非非常大。首先再创建一个数组b,储存原数组a前缀和,比如a每一位都是0,那么前缀和都是0,在[0,0]区间加上1,那么就在新数组的第0位加上1,并且在第1位减去1。现在新数组就是{1,-1,0,0,0,0} ,第[1,1,] 区间加
2021-02-06 11:27:35
915
4
原创 Java 一维前缀和(二维前缀和)
什么是前缀和 ?原数组: a[1], a[2], a[3], a[4], a[5], …, a[n]前缀和 S[i]为数组的前i项和前缀和: S[i] = a[1] + a[2] + a[3] + … + a[i]s[0] = 0s[1] = a[1]s[2] = a[1] + a[2]s[i] = a[1] + a[2] + a[3] +……+ a[i] s[i] = s[i-1] + a[i]注意: 原数组的下标一定要从 1开始, 避免进行下标的转换前缀和的作用快速求出元素组中某
2021-02-05 21:16:42
1229
原创 Java 高精度运算
Java中有两个类可以来处理高精度的计算分别是处理整数的BigInteger和处理小数的BigDecimalBigInteger 只可用于整数构造方法BigInteger(byte[] val) 将包含BigInteger的二进制补码二进制表达式的字节数组转换为BigInteger BigInteger(int numBits, Random rnd) 构造一个随机生成的BigInteger,均匀分布在0到(2 numBits - 1)的范围内。 BigInteger(String va
2021-02-05 21:16:01
823
2
原创 Java 二分法
整数二分法首先二分法属于分治算法,通过不断二分数组来寻找某一个数,这里牵扯到一个分界点问题寻找左分界点private static int f(int l, int r) { while(l < r) { int mid = l + r + 1 >> 1; if(check(mid)) l = mid; else r = mid - 1; } return l;}寻找右分界点private static int f(int l, int r) { whi
2021-02-05 16:51:29
950
7
原创 Java--归并排序
import java.util.Scanner;public class Main{ static int N=100100; static int[] f=new int[N],tmp=new int[N]; static int n; //归并排序 private static void sort(int[] d, int l, int r){ if(l>=r) return; int mid
2021-02-01 13:26:16
75
原创 Java--快速排序
import java.util.Scanner;public class Main { static int N = 100100; static int[] f = new int[N]; static int n; static void sort(int[] d, int l, int r) { if (l >= r) return; int x = d[l], i = l - 1, j = r + 1; .
2021-02-01 11:25:01
75
原创 2018蓝桥杯国赛Java大学C组真题
2018蓝桥杯国赛Java大学C组真题【问题描述】A:年龄问题【问题描述】B:海盗与金币【问题描述】C:全排列【问题描述】D:约瑟夫环【问题描述】E:交换次数【问题描述】A:年龄问题s夫人一向很神秘。这会儿有人问起她的年龄,她想了想说:“20年前,我丈夫的年龄刚好是我的2倍,而现在他的年龄刚好是我的1.5倍”。你能算出s夫人现在的年龄吗?注意,需要提交的是一个整数,不要填写任何多余的内容。【分析】本题比较简单,直接暴力破解即可,不会暴力一个一个数算也可以,不会超过100岁【代码】impor
2020-11-12 16:03:49
739
原创 第十届蓝桥杯大赛软件类决赛 Java大学C组
蓝桥杯2019国赛Java大学C组题试题 A: 奇数倍数试题 B: 递增序列试题 C: 平方拆分试题 D: 切割试题 E: 序列求和试题 F: 最长子序列试题 G: 数正方形试题 H: 矩阵计数试题 A: 奇数倍数【问题描述】请你找到最小的整数 X 同时满足:• X 是 2019 的整倍数• X 的每一位数字都是奇数【答案提交】这是一道结果填空的题,你只需要算出结果后提交即可本题的结果为一 个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分【分析】这题非常简单只需找出2019的
2020-11-06 21:12:47
2110
12
原创 华为汽水瓶问题
【题目】:有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用3个空瓶子换一瓶满的还给老板。如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝?【输入描述】:输入文件最多包含10组测试数据,每个数据占一行,仅包含一个正整数n(1<=n<=100),
2020-09-09 09:37:38
792
原创 Java阶乘计算
【问题描述】 输入一个正整数n,输出n!的值。 其中n!=123*…*n。算法描述 n!可能很大,而计算机能表示的整数范围有限,需要使用高精度计算的方法。使用一个数组A来表示一个大整数a,A[0]表示a的个位,A[1]表示a的十位,依次类推。 将a乘以一个整数k变为将数组A的每一个元素都乘以k,请注意处理相应的进位。 首先将a设为1,然后乘2,乘3,当乘到n时,即得到了n!的值。输入格式 输入包含一个正整数n,n<=1000。输出格式 输出n!的准确值。样例输入10
2020-07-19 20:28:33
709
原创 Java字母图形
【问题描述】利用字母可以组成一些美丽的图形,下面给出了一个例子:ABCDEFGBABCDEFCBABCDEDCBABCDEDCBABC这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。输入格式输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数。输出格式输出n行,每个m个字符,为你的图形。样例输入5 7样例输出ABCDEFGBABCDEFCBABCDEDCBABCDEDCBABC数据规模与约定1 <= n, m <=26
2020-07-16 19:48:43
204
原创 Java旋转游戏
【问题描述】【代码演示】import java.util.Scanner;class Main { public static void main(String[] args) { Scanner sr = new Scanner(System.in); int n = sr.nextInt(); int m = sr.nextInt(); int[][] num = new int[n][m]; for (int i = 0; i < n; i++) { for (
2020-07-14 20:41:10
233
原创 Java矩形切割
【问题描述】小明有一些矩形的材料,他要从这些矩形材料中切割出一些正方形当他面对一块矩形材料时,他总是从中间切割一刀,切出一块最大的正方形,剩下一块矩形,然后再切割剩下的矩形材料,直到全部切为正方形为止例如,对于一块两边分别为5和3的材料(记为5x3),小明会依次切出3x3、2x2、1x1、1x1共4个正方形。现在小明有一块矩形的材料,两边长分别是2019 和324请问小明最终会切出多少个正方形?【代码演示】class Main { // 计数君 static int num = 0; pu
2020-07-10 21:21:33
603
原创 Java分类计数
【问题描述】输入一个字符串,请输出这个字符串包含多少个大写字母,多少个小写字母,多少个数字。【输入格式】输入一行包含一个字符串。【输出格式】输出三行,每行一个整数,分别表示大写字母、小写字母和数字的个数。【样例输入】1+a=Aab【样例输出】131【评测用例规模与约定】对于所有评测用例,字符串由可见字符组成,长度不超过 100。【问题分析】本题较为简单,直接把输入的字符转换成int类型,然后判断就行了,或者使用判断是大写小写字母还是数字的方法,char转换成int类型会变成ASC
2020-07-09 19:16:19
577
1
原创 Java整除序列
【问题描述】有一个序列,序列的第一个数是 n,后面的每个数是前一个数整除 2,请输出这个序列中值为正数的项。【输入格式】输入一行包含一个整数 n。【输出格式】输出一行,包含多个整数,相邻的整数之间用一个空格分隔,表示答案。【样例输入】20【样例输出】20 10 5 2 1【评测用例规模与约定】对于 80% 的评测用例,1 ≤ n ≤ 109。对于所有评测用例,1 ≤ n ≤ 1018。【代码演示】import java.util.Scanner;class Main { p
2020-07-08 20:46:10
442
原创 Java跑步训练
【问题描述】小明要做一个跑步训练。初始时,小明充满体力,体力值计为 10000。如果小明跑步,每分钟损耗600 的体力。如果小明休息,每分钟增加 300 的体力。体力的损耗和增加都是均匀变化的小明打算跑一分钟、休息一分钟、再跑一分钟、再休息一分钟……如此循环。如果某个时刻小明的体力到达 0,他就停止锻炼请问小明在多久后停止锻炼。为了使答案为整数,请以秒为单位输出答案答案中只填写数,不填写单位【问题分析】我们通过题目可以计算,小明跑步每秒损耗10体力,休息每秒恢复5体力,那么在一个死循环中
2020-07-08 18:50:47
1019
原创 Java小朋友崇拜圈
【题目】班里N个小朋友,每个人都有自己最崇拜的一个小朋友(也可以是自己)在一个游戏中,需要小朋友坐一个圈每个小朋友都有自己最崇拜的小朋友在他的右手边求满足条件的圈最大多少人?小朋友编号为1,2,3,…N输入第一行,一个整数N(3<N<100000)接下来一行N个整数,由空格分开要求输出一个整数,表示满足条件的最大圈的人数。例如:输入:93 4 2 5 3 8 4 6 9则程序应该输出:4解释:如图所示,崇拜关系用箭头表示,红色表示不在圈中。显然,最大圈是[2 4
2020-07-06 07:53:24
676
原创 Java等腰三角形
【题目:等腰三角形】本题目要求你在控制台输出一个由数字组成的等腰三角形。具体的步骤是:1. 先用1,2,3,...的自然数拼一个足够长的串2. 用这个串填充三角形的三条边。从上方顶点开始,逆时针填充。比如,当三角形高度是8时: 1 2 1 3 8 4 1 5 7 6 1 7 6891011121314151...
2020-07-04 20:17:43
2273
原创 Java缩位求和
【题目:缩位求和】在电子计算机普及以前,人们经常用一个粗略的方法来验算四则运算是否正确。比如:248 * 15 = 3720把乘数和被乘数分别逐位求和,如果是多位数再逐位求和,直到是1位数,得2 + 4 + 8 = 14 ==> 1 + 4 = 5;1 + 5 = 65 * 6而结果逐位求和为 35 * 6 的结果逐位求和与3符合,说明正确的可能性很大!!(不能排除错误)请你写一个计算机程序,对给定的字符串逐位求和:输入为一个由数字组成的串,表示n位数(n<1000);输出
2020-07-03 21:59:06
349
原创 Java猴子分香蕉
【题目】5只猴子是好朋友,在海边的椰子树上睡着了。这期间,有商船把一大堆香蕉忘记在沙滩上离去第1只猴子醒来,把香蕉均分成5堆,还剩下1个,就吃掉并把自己的一份藏起来继续睡觉第2只猴子醒来,重新把香蕉均分成5堆,还剩下2个,就吃掉并把自己的一份藏起来继续睡觉第3只猴子醒来,重新把香蕉均分成5堆,还剩下3个,就吃掉并把自己的一份藏起来继续睡觉第4只猴子醒来,重新把香蕉均分成5堆,还剩下4个,就吃掉并把自己的一份藏起来继续睡觉第5只猴子醒来,重新把香蕉均分成5堆,哈哈,正好不剩请计算一开始最少有多少
2020-07-01 21:08:17
1280
1
原创 JavaExcel地址
【题目】Excel单元格的地址表示很有趣,它使用字母来表示列号。比如,A表示第1列,B表示第2列,Z表示第26列,AA表示第27列,AB表示第28列,BA表示第53列,当然Excel的最大列号是有限度的,所以转换起来不难。如果我们想把这种表示法一般化,可以把很大的数字转换为很长的字母序列呢?本题目既是要求对输入的数字, 输出其对应的Excel地址表示方式。例如,输入:26则程序应该输出:Z再例如,输入:2054则程序应该输出:BZZ【分析】只需判断输入的数字是否
2020-06-26 13:54:08
2768
原创 Java承压计算
【题目】X星球的高科技实验室中整齐地堆放着某批珍贵金属原料每块金属原料的外形、尺寸完全一致,但重量不同金属材料被严格地堆放成金字塔形 7 5 8 7 8 8 9 2 7 2 8 1 4 9 1 8 1 8
2020-06-24 21:03:03
903
3
原创 Java格式化输出
import java.util.Date;/** * 对于格式化输出的总结 * 醒~ */class Main { public static void main(String[] args) { /*** 输出字符串 ***/ // %s表示输出字符串,也就是将后面的字符串替换模式中的%s System.out.printf("%s", new Integer(1212)); // %n表示换行 Syst
2020-06-23 19:52:47
226
原创 Java纸牌三角形(暴力破解)
【题目】A,2,3,4,5,6,7,8,9 共9张纸牌排成一个正三角形(A按1计算)。要求每个边的和相等下图就是一种排法这样的排法可能会有很多如果考虑旋转、镜像后相同的算同一种,一共有多少种不同的排法呢?请你计算并提交该数字注意:需要提交的是一个整数,不要提交任何多余内容【分析】这是一道得出答案题,因此不需要关心运行占用了多少内存和消耗了多少时间,直接暴力破解即可,需要注意的是,当用9个循环嵌套找出所有可能的时候,需要把结果除以6,因为1种情况旋转会变成3次,每次再镜像会变成6次,所以需要
2020-06-23 15:22:59
636
原创 Java密码脱落
【题目】X星球的考古学家发现了一批古代留下来的密码。这些密码是由A、B、C、D 四种植物的种子串成的序列。仔细分析发现,这些密码串当初应该是前后对称的(也就是我们说的镜像串)由于年代久远,其中许多种子脱落了,因而可能会失去镜像的特征你的任务是:给定一个现在看到的密码串,计算一下从当初的状态,它要至少脱落多少个种子,才可能会变成现在的样子输入一行,表示现在看到的密码串(长度不大于1000)要求输出一个正整数,表示至少脱落了多少个种子?例如,输入:ABCBA则程序应该输出:0再例如,输
2020-06-22 10:44:26
462
2
原创 Java四平方和
【题目】四平方和定理,又称为拉格朗日定理:每个正整数都可以表示为至多4个正整数的平方和。如果把0包括进去,就正好可以表示为4个数的平方和。比如:5 = 0^2 + 0^2 + 1^2 + 2^27 = 1^2 + 1^2 + 1^2 + 2^2(^符号表示乘方的意思)对于一个给定的正整数,可能存在多种平方和的表示法。要求你对4个数排序:0 <= a <= b <= c <= d并对所有的可能表示法按 a,b,c,d 为联合主键升序排列,最后输出第一个表示法程序
2020-06-19 19:08:04
1090
2
原创 Java冰雹数计算
【题目】冰雹数任意给定一个正整数N ** (N<1000000)**如果是偶数,执行: N / 2如果是奇数,执行: N * 3 + 1生成的新的数字再执行同样的动作,循环往复。通过观察发现这个数字会一会儿上升到很高,一会儿又降落下来就这样起起落落的,但最终必会落到“1”,这有点像小冰雹粒子在冰雹云中翻滚增长的样子。比如N=99,28,14,7,22,11,34,17,52,26,13,40,20,10,5,16,8,4,2,1可以看到,N=9的时候,这个“小冰雹”最高冲到了52
2020-06-18 17:24:45
729
原创 Java搭积木游戏
【题目】小明最近喜欢搭数字积木,一共有10块积木,每个积木上有一个数字,0~9。搭积木规则:每个积木放到其它两个积木的上面,并且一定比下面的两个积木数字小。最后搭成4层的金字塔形,必须用完所有的积木下面是两种合格的搭法: 0 0 1 2 3 1 3 4 5 7 5 2 6 7 8 9 9 8 6 4请你计算这样的搭法一共有多少种?【分析】首先可以用一个一维数组来表示这个积木{0,1,2,3,4,5,
2020-06-17 16:00:52
1848
4
原创 Java凑算式
【题目】 B DEFA + --- + ------- = 10 C GHI这个算式中A-I代表1~9的数字,不同的字母代表不同的数字比如:6+8/3+952/714 就是一种解法,5+3/1+972/486 是另一种解法。这个算式一共有多少种解法?【分析】只需要列出九个循环,都从1-9开始,每次循环让每个数各不相同就可以了然后最后一个循环添加组成的式子是否等于10条件的条件注意:循环的变量类型不能用int,因为最后需要做除法运算【代码】pu
2020-06-15 21:01:02
764
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人