JPC客栈
分享Java、Python、C/C++、JavaScript等编程语言的相关知识和应用
展开
-
蓝桥杯2013年第四届真题(Java实现)
每行数据长度不等,是用空格分开的若干个(不大于100个)正整数(不大于100000),请注意行内和行末可能有多余的空格,你的程序需要能处理这些空格。你可以用计算机测试一下,在这种包装情况下,最大不能买到的数量是17。因为工作人员疏忽,在录入ID号的时候发生了一处错误,造成了某个ID断号,另外一个ID重号。每张票据有唯一的ID号。全年所有票据的ID号是连续的,但ID的开始数码是随机选定的。本题的要求就是在已知两个包装的数量时,求最大不能组合出的数字。你的任务是通过编程,找出断号的ID和重号的ID。原创 2024-04-18 20:56:31 · 37 阅读 · 0 评论 -
第十三届蓝桥杯Java B组部分题解
【代码】第十三届蓝桥杯Java B组部分题解。原创 2024-04-18 20:46:51 · 32 阅读 · 0 评论 -
第十四届蓝桥杯Java B组省赛部分题解
将各点投影到轴上,找到相交线段长度。凡是遇到大一点的数字,一律使用long,否则很容易因为溢出而丢分。当n足够大时,阶乘和的后几个数字会趋于稳定,即相等,所以只需要多试几次,找到后9位相同部分。也可以不用写这么复杂,直接将一个10进制转为x进制,然后求各位数字和。toBinaryString 转为二级制。使用Java自带的进制转换函数。原创 2024-04-18 20:37:19 · 21 阅读 · 0 评论 -
蓝桥杯Java B组历年真题(2013年-2021年)
蓝桥杯Java B组历年真题,使用Java语言解决算法题原创 2024-03-02 08:00:00 · 1165 阅读 · 0 评论 -
第十二届蓝桥杯大赛软件赛省赛Java 大学 B 组题解
直接使用暴力,能过60%的数据。使用二分法+组合数计算。原创 2024-04-11 11:42:37 · 719 阅读 · 0 评论 -
重庆交通大学2024年蓝桥杯测试赛1题解(Java版本)
他一张张地数数,一百、两百、三百、四百、五百、六百、七百、八百、九百、一千、两千、三千、四千、五千、六千、七千、八千、九千、一万、两万、三万、四万、五万、六万、七万、八万、九万、十万、二十万、三十万、四十万、五十万、六十万、七十万、八十万、九十万、一百万、两百万、…他到底有多少压岁钱呢?在C++语言的按位移位运算中,左移运算,左边移出的位丢弃,右边移出的空位,补0;右移运算,右边移出的位丢弃,左边移出的空位,如果是正数则补0,若为负数,可能补0或补1,这取决于编译系统,补0称为逻辑右移,补1称为算术右移。原创 2024-04-08 19:14:25 · 294 阅读 · 0 评论 -
2024年重庆交通大学第十五届蓝桥杯测试赛2题解Java版
小蓝有两双不同的鞋,可以换着穿,一双鞋,可以穿1天就换另一双,也可以连续穿2天再换另一双,但同一双鞋不能连续穿3天。用A、B代表这两双不同的鞋。小蓝有两双不同的鞋,可以换着穿,一双鞋,可以穿1天就换另一双,也可以连续穿2天再换另一双,但同一双鞋不能连续穿3天。这里说的字典序,就是先按第1天吃的糖果数从小到大排序,第1天吃的糖果数相同,再按第2天吃的糖果数从小到大排序,以此类推。输入数据占一行,为小A选用的数码管(即a, b, c, d, e, f, g中的若干个),选用的数码管按字母顺序排列,且没有重复。原创 2024-04-02 22:18:58 · 469 阅读 · 0 评论 -
重庆交通大学2024年蓝桥杯测试赛3题解(AK Java版)
按以下顺序输出所有的组合方案:先按使用数的个数从少到多的顺序输出每个方案,每个方案占一行,每个方案中的数按从小到大排序,对使用数的个数相同的方案,再按字典序输出。输入一个包含n行、m列整数的矩阵,允许从每一行取一个数,构成一个子序列,求最长严格上升子序列的长度,即不要求这些数所在行是连续的,但这些数要按它们在矩阵中中行的顺序排列,且这些数是严格递增的。输入一个包含n行、m列整数的矩阵,允许从每一行取一个数,构成一个子序列,求最长严格上升连续子序列的长度,即要求这些数所在行是连续的,且这些数是严格递增的。原创 2024-03-25 20:45:18 · 118 阅读 · 0 评论 -
Python实现进程调度、生产者消费者
【代码】Python实现进程调度、生产者消费者。原创 2024-01-16 22:13:05 · 119 阅读 · 0 评论 -
并查集专题
一开始,每个元素都是独立的集合int main()i原创 2023-09-29 17:24:51 · 246 阅读 · 0 评论 -
数组逆置(Java)
1、有两个数组a:原数组 ;b:逆置后的数组static void reverse(int[]a,int[]b){ int n=a.length; for(int i=0;i<n;i++){ b[i]=a[n-1-i]; }}2、就地逆置static void reverse(int []a){ int n=a.length; int m=n/2; for(int i=0;i<m;i++){ t原创 2021-09-07 19:51:50 · 1098 阅读 · 0 评论 -
选择、冒泡、插入、快速、归并、桶排序算法代码实现
改进的冒泡排序:当前一趟没有发生交换元素时,说明数据已经有序,可以不用再进行后面几趟。适用于待排序的值在一个有限的范围内且为整型。基础版,找到一个小的就交换。改进版:找到最小的再交换。原创 2022-10-18 09:04:46 · 194 阅读 · 0 评论 -
《算法笔记》动态规划专题
动态规划简称DP,是将一个复杂问题分解成若干个子问题,通过综合子问题的最优解来得到原问题的最优解。实现动态规划有两种方法:递归(记忆化搜索)、递推。一个问题必须要有重叠子问题和最优子结构,才能使用动态规划去解决。...原创 2022-08-14 10:19:21 · 80 阅读 · 0 评论 -
ACWing题解--1501. 回文数--高精度
问题描述如果一个数字从前往后读和从后往前读都一样,那么这个数字就是回文数字。所有一位数字都是回文数字。非回文数字可以通过一系列的操作与回文数字配对。首先,将非回文数字反转,让反转后的数字与原数字相加,得到一个新的数字。如果新的数字不是回文数字,那么就重复此操作,直到得到回文数字为止。例如,我们从 67 开始,经过两次操作可以得到一个回文数字:67+76=143,143+341=484。对于给定的任意正整数 N,请你找到它的配对回文数并输出得到该回文数需要的操作次数。输入格式共一行,包含两个整数 N 和原创 2022-10-09 16:12:28 · 148 阅读 · 0 评论 -
判断一个数是否为素数(高效算法)
package com.qf.first;import java.util.*;public class FindPrime { public static boolean isPrime(int num) { if(num==2||num==3) {return true;} if(num%6!=1&&num%6!=5) {return false;} int tmp=(int)Math.sqrt(num); for(int i=5;i<=tmp;i+=6) .原创 2021-10-06 18:21:57 · 161 阅读 · 0 评论 -
2251:Dungeon Master--三维迷宫之最短步数BFS
三维迷宫题原创 2022-10-14 13:03:14 · 379 阅读 · 0 评论 -
PAT乙级1021-个位数统计Java版
import java.io.*;public class Main{ public static void main (String args[]) throws IOException{ BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));//输入更快 char[] buf=bf.readLine().toCharArray();//转换成字符数组 int.原创 2022-02-16 22:10:03 · 153 阅读 · 0 评论 -
《算法笔记》简单数学、公约数与公倍数、分数的四则运算、素数、质因子分解、大整数运算、组合数、欧几里得算法相关知识(例题+代码C++)
一、简单数学二、最大公约数与最小公倍数1、最大公约数2、最小公倍数三、分数的四则运算1、分数的表示和化简(1)分数的表示(2)分数的化简2、分数的四则运算(1)加法(2)减法(3)乘法(4)除法3、分数的输出四、素数1、素数的判断2、素数表的获取五、质因子分解六、大整数运算1、大整数的存储2、大整数的四则运算(1)高精度加法(2)高精度减法(3)高精度与低精度的乘法(4)高精度与低精度的除法七、扩展欧几里得算法1、扩展欧几里得算法2、方程ax+by=c求原创 2022-05-20 16:49:53 · 329 阅读 · 0 评论 -
PTA乙级1017Java版-A除以B
import java.io.*;import java.math.BigInteger;//Java自带的大数操作public class Main{ public static void main(String args[]) throws IOException{ BufferedReader bf=new BufferedReader(new InputStreamReader(System.in)); String[] str=bf.readLine(.原创 2022-02-16 22:35:27 · 256 阅读 · 0 评论 -
删除数组元素(Java)
在一个有n个数据元素的数组中删除第pos个位置的数组元素,时间复杂度为O(n)static boolean delete(int []a,int pos){ int n=a.length; if(pos<0||pos>=n) return false;//删除失败 for(int i=pos+1;i<n;i++){ a[i-1]=a[i];//顺次移位填补 return true;//删除成功 }}...原创 2021-09-07 20:32:06 · 232 阅读 · 0 评论 -
分数求和问题--递归+最大公约数+最小公倍数
输入n个分数并对他们求和,并用最简形式表示。所谓最简形式是指:分子分母的最大公约数为1;若最终结果的分母为1,则直接用整数表示。接下来n行,每行一个分数,用"p/q"的形式表示,不含空格,p,q均不超过10。如:56、103均是最简形式,而36需要化简为12,31需要化简为3。输出只有一行,即最终结果的最简形式。若为分数,用"p/q"的形式表示。第一行是一个整数n,表示分数个数,1≤n≤10;分子和分母均不为0,也不为负数。原创 2022-11-02 16:36:33 · 168 阅读 · 0 评论 -
大整数运算-大数的存储与运算
可能有多组测试数据,对于每组数据,将给出的N个数从小到大进行排序,输出排序后的结果,每个数占一行。对于每组案例,第1行是测试数据的组数n,每组测试数据占2行,分别是两个加数。接下来的N行每行有一个数,数的长度范围为1...原创 2022-08-17 12:43:07 · 206 阅读 · 0 评论 -
团体程序设计天梯赛练习题-持续更新中
团体程序设计天梯赛练习题,使用C++、Java、Python原创 2022-06-28 18:01:09 · 533 阅读 · 0 评论 -
P1031 [NOIP2002 提高组] 均分纸牌--贪心算法
在编号为 NN 的堆上取的纸牌,只能移到编号为 N-1N−1 的堆上;有NN堆纸牌,编号分别为 1,2,…从第二堆取 11 张牌放到第一堆,此时每堆纸牌数分别为 10,10,10,1010,10,10,10。从第三堆取 33 张牌放到第二堆,此时每堆纸牌数分别为 9,11,10,109,11,10,10。从第三堆取 44 张牌放到第四堆,此时每堆纸牌数分别为 9,8,13,109,8,13,10。例如 N=4N=4 时,44 堆纸牌数分别为 9,8,17,69,8,17,6。,表示每堆纸牌初始时的纸牌数。原创 2022-10-12 23:04:22 · 183 阅读 · 0 评论 -
《算法笔记》简单模拟、查找元素、图形输出、日期处理、进制转换与字符串处理(例题+代码C++)
一、简单模拟1、1001 害死人不偿命的(3n+1)猜想 (15 分)卡拉兹(Callatz)猜想:对任何一个正整数 n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把 (3n+1) 砍掉一半。这样一直反复砍下去,最后一定在某一步得到 n=1。卡拉兹在 1950 年的世界数学家大会上公布了这个猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似很傻很天真的命题,结果闹得学生们无心学业,一心只证 (3n+1),以至于有人说这是一个阴谋,卡拉兹是在蓄意延缓美国数学界教学与科研的进展……我们今天的题原创 2022-04-26 11:55:10 · 793 阅读 · 0 评论 -
PAT乙级1040-有几个PAT(Java)
import java.io.*;public class Main{ public static void main(String args[])throws IOException{ //BufferedReader读取速度快,保证不超时 BufferedReader in=new BufferedReader(new InputStreamReader(System.in)); String s=in.readLine();//读取字符串..原创 2022-02-24 17:28:53 · 252 阅读 · 0 评论 -
迷宫问题之最短步数
#include <bits/stdc++.h>using namespace std;struct Pos { int x, y, steps;//记录走到某个位置的步数};const int M = 100, N = 100;char maze[M][N];bool vis[M][N];int m, n;int dir[4][2] = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};int bfs(Pos s, Pos t) { fill(.原创 2021-11-20 13:15:20 · 323 阅读 · 0 评论 -
《算法笔记》图专题
一、图的定义与相关术语二、图的存储1、邻接矩阵2、邻接表三、图的遍历1、采用深度优先搜索(DFS)法遍历图2、采用广度优先搜索(BFS)法遍历图四、最短路径1、Dijkstra算法2、Bellman-Ford算法和SPFA算法3、FLoyd算法五、最小生成树1、最小生成树及其性质2、prim算法3、kruskal算法六、拓扑排序1、有向无环图2、拓扑排序七、关键路径1、AOV网和AOE网............原创 2022-08-22 12:35:45 · 152 阅读 · 0 评论 -
dfs(c++)
#include <stdio.h>#include <math.h>char map[9][9];int n, m, t;int di, dj;bool escape;int dir[4][2] = {{0, -1}, {0, 1}, {1, 0}, {-1, 0}};//左、右、下、上void dfs(int wi, int wj, int cnt) { int i, tmp, nexti, nextj; if (wi == di && w.原创 2021-10-21 16:50:38 · 177 阅读 · 0 评论 -
部分和问题-dfs入门
#include<bits\stdc++.h>using namespace std;const int N=25;int n,k;int num[N];bool dfs(int i,int sum){//已经得到前i项(不含i)的和sum if(i==n)return sum==k; if(dfs(i+1,sum+num[i]))return true;//加上第i项 if(dfs(i+1,sum))return true;//不加第i项 return...原创 2021-11-26 21:31:19 · 410 阅读 · 0 评论 -
字典序问题-环状序列
【代码】字典序问题-环状序列。原创 2022-10-06 16:52:13 · 95 阅读 · 0 评论 -
《算法笔记》贪心算法专题
贪心法就是遵循某种规则,不断贪心的选取当前最优策略的算法。原创 2022-08-18 17:08:50 · 149 阅读 · 0 评论 -
“马走日和田”--最少步数BFS
有一位小学生就想如果马能有两种走法将增加其趣味性,因此,他规定马既能按“日”走,也能如象一样走“田”字。他的同桌平时喜欢下围棋,知道这件事后觉得很有趣,就想试一试,在一个(100×100)的围棋盘上任选两点A、B,A点放上黑子,B点放上白子,代表两匹马。棋子可以按“日”字走,也可以按“田”字走,俩人一个走黑马,一个走白马。谁用最少的步数走到左上角坐标为(1,1)的点时,谁获胜。现在他请你帮忙,给你A、B两点的坐标,想知道两个位置到(1,1)点可能的最少步数。1330:【例8.3】最少步数。原创 2022-10-15 09:54:54 · 422 阅读 · 0 评论 -
Math类和Random类(Java)
一、Math类Math类中所有变量和方法都是static和final,可以直接使用:类名.方法()来调用。1、常量:Math.PI、Math.Epackage com.qf.chapter03;public class Demo1 { public static void main(String[] args) { System.out.println(Math.PI); System.out.println(Math.E); System.out.println(Math.原创 2021-09-08 21:20:02 · 86 阅读 · 0 评论 -
排队接水--贪心
共两行,第一行为n(1≤n≤1000);第二行分别表示第1个人到第n个人每人的接水时间T1,T2,…,Tn,每个数据之间有1个空格。有n个人在一个水龙头前排队接水,假如每个人接水的时间为Ti,请编程找出这n个人排队的一种顺序,使得n个人的平均等待时间最小。有两行,第一行为一种排队顺序,即1到n的一种排列;第二行为这种排列方案下的平均等待时间(输出结果精确到小数点后两位)。:每次让打水时间短的先打水。原创 2022-11-02 19:46:28 · 115 阅读 · 0 评论 -
二分查找(Java)
package com.qf.first;public class Demo01 { public static void main(String[] args) { int []nums= {1,3,5,6,7,9,10,11,13,34,56};//必须为有序 System.out.println(bindary_Search(nums, 7)); } public static int bindary_Search(int[]nums,int goal) { int left=0.原创 2021-09-20 09:08:30 · 49 阅读 · 0 评论 -
《算法笔记》-各种排序算法、散列、递归、贪心、二分、双指针、随机选择算法(知识点+例题+代码)
一、排序1、选择排序2、插入排序3、排序题与sort函数的应用二、散列1、散列的定义与整数散列2、字符串hash初步三、递归1、分治2、递归四、贪心1、简单贪心2、区间贪心五、二分1、二分查找2、二分法拓展3、快速幂六、two points1、什么是two points2、归并排序3、快速排序七、其它高效技巧与算法1、打表2、活用递推3、随机选择算法...原创 2022-05-10 12:21:25 · 666 阅读 · 0 评论 -
P1059 [NOIP2006 普及组] 明明的随机数--桶排序算法
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了 NN 个 11 到 10001000 之间的随机整数 (N\leq100)(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。利用桶排序算法,即开设一个大小为1005的数组arr,索引存放随机数,元素值存放该随机数的个数,按索引从小到大输出元素值大于0的对应索引。输出也是两行,第 11 行为 11 个正整数 MM,表示不相同的随机数的个数。原创 2022-10-10 10:50:51 · 142 阅读 · 0 评论 -
C++STL之priority_queue优先队列
优先队列是一种极其特殊的队列,他与标准的队列使用线性结构进行计算不同,优先队列的底层是以散列的状态(非线性)表现的,他与标准的队列有如下的区别,标准的队列遵从严格的先进先出,优先队列并不遵从标准的先进先出,而是对每一个数据赋予一个权值,根据当前队列权值的状态进行排序,使得权值最大(或最小)的永远排在队列的最前面。priority_queue < T , Container , Compare > priority_queue < T > //直接输入元素则使用默认容器和比较函数T就是Type为数据类型。..原创 2022-08-09 18:49:01 · 271 阅读 · 0 评论 -
深度优先搜索DFS
package com.qf.first;import java.util.Scanner;public class DFS { static int nums[];//整个类可用 public static void main(String[] args) { Scanner in=new Scanner(System.in); int n=in.nextInt(); nums=new int[n]; for(int i=0;i<n;i++) { nums[i].原创 2021-10-13 08:45:46 · 55 阅读 · 0 评论