2022java蓝桥杯算法训练
1.印章:
代码:


1 import java.util.Scanner;
2
3 public class Main {
4 public static void main(String[] args) {
5 Scanner s=new Scanner(System.in);
6 int n=s.nextInt();
7 int m=s.nextInt();
8 double p=1.0/n;
9
10 double[][] b=new double[m+1][n+1];
11 if (n==1){ //当n=1时m>n几率为1
12 b[m][n]=1;
13 System.out.printf("%.4f",b[m][n]);
14 return;
15 }
16 if (n>1&&m<n){ //当m<n时几率为0
17 b[m][n]=0;
18 System.out.printf("%.4f",b[m][n]);
19 return;
20 }
21 for (int i = 1; i <=m; i++) {
22 for (int j = 1; j <=n; j++) {
23 if (i<j) b[i][j]=0; //当m<n时几率为0
24 if (j==1){
25 b[i][j]=Math.pow(p,i-1); //当i张集齐1种的概率
26 }else {
27 b[i][j]=b[i-1][j]*(j*1.0/n)+b[i-1][j-1]*((n-j+1)*1.0/n); //当i张集齐j种的概率
28 }
29
30 }
31
32 }
33
34 System.out.printf("%.4f",b[m][n]);
35
36 }
37 }
2.拿金币:
代码:


1 import java.util.Scanner;
2
3
4 public class Main {
5
6 /*
7 * 输入:第一行,整数n,表示N*N的一个矩阵。
8 * n行,初始化,每个矩阵的大小。每个数不能找过1000. short类型。
9 * 格式要求:n小于1000 short类型
10 * */
11
12 /*
13 * 输出:一行整数sum,表示的是矩阵从左上角到右下角的最大和。 int类型
14 * w*/
15
16 //程序思路:
17 //1.接受n,创建一个数组
18 //2.初始化数组。
19 //3.求和。
20
21 public static void main(String[] args){
22 //1.接受n,创建一个数组
23 Scanner input = new Scanner(System.in);
24 short n = input.nextShort();
25
26 //2.初始化数组。
27 int[][] arrys = new int[n][n];
28 for (int i = 0; i <n ; i++) {
29 for (int j = 0; j <n ; j++) {
30 arrys[i][j] = input.nextInt();
31
32 }
33
34 }
35
36
37
38
39
40
41
42
43 //3.求和
44 for (int i = 0; i < n; i++) {
45 for (int j = 0; j < n; j++) {
46 //初始化固定部分,arrys[0][0]-a[0][n-1]。a[0][0]-a[n-1][0]。
47 //因为从这一部分走,方向是唯一,也就是和是唯一的,没有别的路。
48 if (i==0&&j==0)//初始化首位。
49 continue;
50
51
52 if (i == 0) {//首行非首位。
53 arrys[i][j] = (arrys[i][j-1]+arrys[i][j]);//运算+ - 至少要int类型,所以会被强制转换,而不是下标问题。
54 continue;
55
56 }
57
58 if (j == 0) {//首列,非首位。
59 arrys[i][j] = (arrys[i-1][j]+arrys[i][j]);
60 continue;
61 }
62
63 if (arrys[i - 1][j] > arrys[i][j - 1]) {//上比左大。
64 arrys[i][j] = (arrys[i][j]+arrys[i-1][j]);
65 }else arrys[i][j] =(arrys[i][j]+arrys[i][j-1]);//左比上大。
66
67
68 }
69 }
70
71
72 System.out.println(arrys[n-1][n-1]);
73
74 }
75
76 }
3.数字游戏:
代码:


1 import java.util.Scanner;
2 /*
3 *
4 * */
5 public class Main {
6
7 static int n;//初始的n个数
8 static int sum;//相加的结果
9 static int arr1[];
10 static boolean bool = true;//标记是否找到n个元素
11
12 public static void main(String[] args) {
13 Scanner sc = new Scanner(System.in);
14 n = sc.nextInt();
15 sum = sc.nextInt();
16
17 int array[] = new int[n];
18 int visit[] = new int[n+1]; //访问标记
19
20 dfs(0, array, visit);
21 }
22
23 //step:当前已经遍历的元素数;array:存放当前遍历的元素; visit:标记当前哪些元素已被访问;
24 public static void dfs(int step,int arr[], int vis[]){
25 if(step == n){//1.找到n个数字,检查这n个数相加是否等于sum
26 int arr1[] = new int[n];
27 for(int i=0;i<n;i++){//先将array数组中的元素 放到arr1
28 arr1[i] = arr[i];
29 }//for
30
31 for(int i=1;i<n;i++){//累加到arr1[0]
32 for(int j=0;j<n-i;j++){
33 arr1[j]=arr1[j]+arr1[j+1];
34 }
35 }//for
36
37 if(arr1[0] == sum){//累加后与sum相等,则输出
38 for(int i:arr){
39 System.out.print(i+" ");
40 }
41 bool = false;//已经找到符合要求的n个元素
42 return;
43 }else{//累加后与sum不相等,退出重新查找
44 return;
45 }
46
47 }//if
48 if(bool == true){//2.没有找到符合要求的n个元素
49 for(int i=1;i<=n;i++){
50 if(vis[i]==0){//i值没有使用过
51 arr[step]=i;//存储当前访问的元素
52 vis[i]=1;
53 dfs(step+1,arr,vis);//从当前这个元素起,重新进行遍历
54 vis[i]=0;
55 }
56 }
57 }//if
58 return;
59 }
60 }
4.无聊的逗:
代码:


1 import java.util.Scanner;
2 public class Main {
3 public static void main(String[] args) {
4 Scanner cin=new Scanner(System.in);
5 int ans=Integer.MIN_VALUE;
6 int n = cin.nextInt();
7 int []array=new int[1<<n];
8 int []nums=new int[n];
9 for(int i=0;i<n;++i){
10 nums[i]=cin.nextInt();
11 array[1<<i]=nums[i];
12 }
13 for(int i=0;i<1<<n;++i){
14 for(int j=0;j<n;++j){
15 if((i&(1<<j))==0)continue;
16 array[i]=array[i-(1<<j)]+nums[j];
17 break;
18 }
19 }
20 for(int i=1;i<(1<<n);++i){
21 int j=(1<<n)-i-1;
22 for(int k=j;k>0;k=(k-1)&j){
23 if(array[k]==array[i])
24 ans=Math.max(array[k],ans);
25 }
26 }
27 System.out.print(ans);
28 }
29 }
5.礼物:
代码:


1 import java.io.BufferedReader;
2 import java.io.IOException;
3 import java.io.InputStreamReader;
4 public class Main{
5 static int count =0;
6 static long S;
7 public static void main(String args[]) {
8 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
9 String s,s2;
10 String[] b1 = null,b2 = null;
11 try {
12 s=br.readLine();
13 b1=s.split(" ");
14 s2=br.readLine();
15 b2=s2.split(" ");
16
17 } catch (IOException e) {
18 // TODO Auto-generated catch block
19 e.printStackTrace();
20 }
21 int N=Integer.parseInt(b1[0]);
22 S=Long.parseLong(b1[1]);
23
24 int[] a=new int[N+1];
25 long[] sum=new long[N+1];
26 for(int i=1;i<=b2.length;i++) {
27 a[i]=Integer.parseInt(b2[i-1]);
28 sum[i]=sum[i-1]+a[i];
29 }
30 int l=1,r=N;
31 while(l<r) {
32 int mid=(l+r+1)/2;
33 if(fun(mid,N,sum)) {
34 l=mid;
35 }else {
36 r=mid-1;
37 }
38 }
39 System.out.print(2*l);
40 }
41 public static boolean fun(int mid,int n,long[] sum) {
42 for(int i=mid;i<=n-mid;i++) {
43 if(sum[i]-sum[i-mid]<=S&&sum[i+mid]-sum[i]<=S) {
44 return true;
45 }
46 }
47 return false;
48 }
49 }
2022java蓝桥杯算法训练的更多相关文章
- Java实现 蓝桥杯 算法训练 猴子吃包子(暴力)
试题 算法训练 猴子吃包子 问题描述 从前,有一只吃包子很厉害的猴子,它可以吃无数个包子,但是,它吃不同的包子速度也不同:肉包每秒钟吃x个:韭菜包每秒钟吃y个:没有馅的包子每秒钟吃z个:现在有x1个肉 ...
- Java实现蓝桥杯 算法训练 大等于n的最小完全平方数
试题 算法训练 大等于n的最小完全平方数 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 输出大等于n的最小的完全平方数. 若一个数能表示成某个自然数的平方的形式,则称这个数为完全平 ...
- 蓝桥杯算法训练 java算法 表达式求值
问题描述 输入一个只包含加减乖除和括号的合法表达式,求表达式的值.其中除表示整除. 输入格式 输入一行,包含一个表达式. 输出格式 输出这个表达式的值. 样例输入 1-2+3*(4-5) 样例输出 - ...
- java实现 蓝桥杯 算法训练 Password Suspects
问题描述 在年轻的时候,我们故事中的英雄--国王 Copa--他的私人数据并不是完全安全地隐蔽.对他来说是,这不可接受的.因此,他发明了一种密码,好记又难以破解.后来,他才知道这种密码是一个长度为奇数 ...
- 蓝桥杯 算法训练 Torry的困惑(基本型)(水题,筛法求素数)
算法训练 Torry的困惑(基本型) 时间限制:1.0s 内存限制:512.0MB 问题描述 Torry从小喜爱数学.一天,老师告诉他,像2.3.5.7……这样的数叫做质数.Torry突 ...
- 蓝桥杯 算法训练 区间k大数查询(水题)
算法训练 区间k大数查询 时间限制:1.0s 内存限制:256.0MB 问题描述 给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个. 输入格式 第一行包含一个数n,表示序列长度. ...
- 蓝桥杯--算法训练 区间k大数查询
算法训练 区间k大数查询 时间限制:1.0 ...
- 蓝桥杯 算法训练 ALGO-116 最大的算式
算法训练 最大的算式 时间限制:1.0s 内存限制:256.0MB 问题描述 题目很简单,给出N个数字,不改变它们的相对位置,在中间加入K个乘号和N-K-1个加号,(括号随便加)使最终结果尽量 ...
- 蓝桥杯算法训练 区间k大数查询
算法训练 区间k大数查询 问题描述 给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个. 输入格式 第一行包含一个数n,表示序列长度. 第二行包含n个正整数,表示给定的序列. 第三个 ...
随机推荐
- springboot 使用select的注解,来查询数据库。
package com.aaa.zxf.mapper; import com.aaa.zxf.model.Book; import org.apache.ibatis.annotations.*; i ...
- ApacheCN Asp.NET 译文集 20211126 更新
ASP.NET Core2 基础知识 零.前言 一.搭建舞台 二.控制器 三.视图 四.模型 五.验证 六.路由 七.RestBuy 八.添加功能.测试和部署 ASP.NET Core3 和 Angu ...
- 在Android中用纯Java代码布局
感谢大佬:https://www.jianshu.com/p/7aedea560f16 在Android中用纯Java代码布局 本文的完成了参考了一篇国外的教程,在此表示感谢. Android中的界面 ...
- 可能用得上的UI控件
为了便于开发者打造各式各样的优秀App,UIKit框架提供了非常多功能强大又易用的UI控件以下列举一些在开发中可能用得上的UI控件: 红色表明最常用,蓝色代表一般,黑色代表几乎不用(这不是绝对的, ...
- 一致性协议之ZAB
前言 一致性协议 包括 Paxos,Raft,2PC,3PC等等,今天我们讲一种协议,ZAB 协议,该协议应该是所有一致性协议中生产环境中应用最多的了.为什么呢?因为他是为 Zookeeper 设计的 ...
- shell脚本命令(sotr/unip/tr/cut/eval)与正则表达式
shell脚本命令(sotr/unip/tr/cut/eval)与正则表达式 1.sort命令 概述: Linux sort命令用于将文本文件内容加以排序. sort命令可针对文本文件的内容,以行为单 ...
- 【发点感慨】我的cnblogs的文章被爬到了别的网站,阅读量比在cnblogs上还要高
近期我写了挺多VictoriaMetrics的文章,在搜索相关文章的时候发现,我的文章被别的网站爬去了: 写写技术文章就是无偿分享给别人看的,越多人看到越多人受益,这一点没毛病. 但是: 爬了别人的文 ...
- Pandas中Series与Dataframe的区别
1. Series Series通俗来讲就是一维数组,索引(index)为每个元素的下标,值(value)为下标对应的值 例如: arr = ['Tom', 'Nancy', 'Jack', 'Ton ...
- 【前端开发日记 】VSCODE被初始化之后重新设置的这些事
不知到什么插件的原因,导致我的vscode编辑器,在输入比如div的时候按tab不会识别成html标签,在设置了推荐词之后还是不好使,于是初始化了自己的编辑器设置 ,导致所有的插件和个性化设置都不见了 ...
- 《PHP程序员面试笔试宝典》——什么是职场暗语?
本文摘自<PHP程序员面试笔试宝典> 文末有该书电子版下载. 随着求职大势的变迁发展,以往常规的面试套路因为过于单调.简明,已经被众多"面试达人"们挖掘出了各种&quo ...