第十一届蓝桥杯b组(10月真题)

本文通过几个具体的Java编程实例,包括字符计数、二维数组操作、图遍历搜索等,展示了多种解决问题的方法和技术细节。这些示例涵盖了基本算法实现、数据结构应用及搜索策略等方面。

没了 哈哈哈哈哈

在这里插入图片描述
答案:624

代码

public class Main{
    public static void main(String[] args){
        int res  = 0;
       for(int i=1;i<=2020;i++){
           res += count(i);
       }
       System.out.println(res);
    }
    public static int count(int x){
        int sum = 0;
        while(x>0){
            int t = x%10;
            x /= 10;
            if(t==2) sum ++;
        }
        return sum;
    }
}

在这里插入图片描述
答案:16520
这题的数据没有 只有题目
代码

import java.util.Scanner;

public class Main{
    static int n,res;
    static char[][] arr;
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        n = sc.nextInt();
        arr = new char[n+5][];
        for(int i=0;i<n;i++){
            arr[i] = sc.next().toCharArray();
        }
        for(int i=0;i<n;i++){
            for(int j=0;j<arr[i].length;j++){
                if(arr[i][j]=='2'){
                    hang(i,j);
                    lie(i,j);
                    dui(i,j);
                }
            }
        }
        System.out.println(res);
    }
    public static void hang(int x,int y){
        int tx = x;
        int ty = y;
        for(int i=0;i<3;i++){
            ty ++;
            if(ty>=arr[tx].length||arr[tx][ty]==arr[tx][ty-1]) return;
        }
        res ++;
    }
    public static void lie(int x,int y){
        int tx = x;
        int ty = y;
        for(int i=0;i<3;i++){
            tx++;
            if(tx>=n||arr[tx][ty]==arr[tx-1][ty]) return ;
        }
        res ++;
    }
    public static void dui(int x,int y){
        int tx = x;
        int ty = y;
        for(int i=0;i<3;i++){
            tx++;
            ty++;
            if(tx>=n||ty>=arr[tx].length||arr[tx][ty]==arr[tx-1][ty-1]) return ;
        }
        res ++;
    }
}

在这里插入图片描述
答案 :761

代码:

public class Main{
    static int[][] arr = new int[100][100];
    public static void main(String[] args){
        get_ans();
        System.out.println(arr[19][19]);
    }
    public static void get_ans(){
        int tx = 0;
        int ty = 0;
        int data = 1;
        arr[tx][ty] = data++;
        while(arr[19][19]==0){
            if(tx==0){
                ty++;
                arr[tx][ty] = data++;
                while(ty!=0){
                    tx ++;
                    ty --;
                    arr[tx][ty] = data++;
                }
            }else if(ty==0){
                tx++;
                arr[tx][ty] = data++;
                while(tx!=0){
                    tx --;
                    ty ++;
                    arr[tx][ty] = data++;
                }
            }
        }
    }
}

在这里插入图片描述

import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
import java.util.TreeSet;

public class Main{
    static int res = 0;
    static int[][] arr = new int[10][10];
    static boolean[] flag = new boolean[10];
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        arr[1][2] = 1;
        arr[1][6] = 1;
        arr[2][1] = 1;
        arr[2][7] = 1;
        arr[2][3] = 1;
        arr[3][2] = 1;
        arr[3][7] = 1;
        arr[3][4] = 1;
        arr[4][3] = 1;
        arr[4][5] = 1;
        arr[5][4] = 1;
        arr[5][6] = 1;
        arr[5][7] = 1;
        arr[6][1] = 1;
        arr[6][5] = 1;
        arr[6][7] = 1;
        arr[7][2] = 1;
        arr[7][3] = 1;
        arr[7][5] = 1;
        arr[7][6] = 1;
        dfs(1,0);
        System.out.println(res);
    }
    public static void dfs(int x,int cnt){//当前判断的是x 判断了y个数 选了cnt个
       if(x==8){
           int sum = 0;
           for(int i=1;i<=7;i++){
               int[] book = new int[10];
               if(flag[i]){
                   Queue<Integer> queue = new LinkedList<>();
                   queue.add(i);
                   book[i] = 1;
                   while(queue.size()>0){
                       int no = queue.poll();
                       sum ++;
                       for(int j=1;j<=7;j++){
                           if(arr[no][j]==1&&flag[j]&&book[j]==0){
                               book[j] = 1;
                               queue.add(j);
                           }
                       }
                   }
                   break;
               }
           }
           if(sum!=0&&sum==cnt) res ++;
           return;
       }
       flag[x] = true;
       dfs(x+1,cnt+1);
       flag[x] = false;
       dfs(x+1,cnt);
    }
}

在这里插入图片描述

在这里插入图片描述

import java.util.Arrays;
import java.util.Scanner;

public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] arr = new int[n];
        int sum = 0;
        for(int i=0;i<n;i++){
            arr[i] = sc.nextInt();
            sum += arr[i];
        }
        double ave = 1.0*sum/n;
        Arrays.sort(arr,0,n);
        System.out.println(arr[n-1]);
        System.out.println(arr[0]);
        System.out.printf("%.2f",ave);
    }
}

在这里插入图片描述

import java.util.Scanner;

public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        char[] ch = sc.next().toCharArray();
        int res = -1;
        int sum = 0;
        int[] arr = new int[26];
        for(int i=0;i<ch.length;i++){
            int t = ch[i]-'a';
            arr[t]++;
        }
        for(int i=0;i<26;i++){
            if(sum<arr[i]){
                sum = arr[i];
                res = i;
            }
        }
        char ans = (char) ('a' +res);
        System.out.println(ans);
        System.out.println(sum);
    }
}

在这里插入图片描述
菜鸡只会爆搜。。。。这题应该废了

在这里插入图片描述
在这里插入图片描述

import java.util.Scanner;

public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.next();
        long len = s.length();
        char[] ch = new char[(int)len+5];
        for(int i=1;i<=len;i++) ch[i] = s.charAt(i-1);
        long res = 0;
        long[] pre = new long[30];
        for(int i=1;i<=len;i++){
            res += (i-pre[ch[i]-'a'])*(len-i+1);
            pre[ch[i]-'a'] = i;
        }
        System.out.println(res);
    }
}

在这里插入图片描述

### 关于第十五届蓝桥杯 C++ B省赛的信息 #### 赛事概述 第十五届蓝桥杯全国软件和信息技术专业人才大赛计划在2024年举行。作为一项面向大学生的重要编程竞赛活动,该赛事旨在促进高校计算机教育的发展,提高学生的实践能力和创新精神[^1]。 #### 报名方式 参赛者可以通过官方网站进行注册报名,并按照提示完成个人信息填写以及缴费流程。具体时间安排请关注官方通知,通常会在比赛前几个月开放报名通道。 #### 备考建议 为了更好地准备此次比赛,在日常学习过程中应当注重以下几个方面: - **基础知识巩固**:熟练掌握C++语法结构、数据类型转换等内容; - **算法训练**:加强对经典算法的学习如排序、查找等,并通过在线平台刷题来提升解题速度与准确性; - **模拟实战演练**:定期参加历年真题练习或同类性质的比赛积累经验; 对于样例题目中的字符串处理问题,可以采用如下方法解决: ```cpp #include <iostream> #include <string> #include <algorithm> using namespace std; int main() { int n, k; string s1, s2; cin >> n >> k >> s1 >> s2; // 输入两个整数n,k 和两串字符s1,s2 // 将两个字符串连接起来并排序 string combined = s1 + s2; sort(combined.begin(), combined.end()); cout << combined << endl; // 输出排序后的结果 return 0; } ``` 此程序接收两个正整数`n`,`k`(虽然在这个例子中并未实际使用),接着读取两个由小写字母成的字符串`s1`和`s2`。最后将这两个字符串拼接在一起并对新形成的字符串按字母顺序升序排列后输出最终的结果。
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值