• 蓝桥杯刷题7


    目录

    1. 字母数

    2. 列名

    3. 大乘积

    4. 最大连通

    5. 星期几


    1. 字母数

    1. public class Main {
    2. public static void main(String[] args) {
    3. int num = 2023;
    4. while(true) {
    5. String m=Integer.toString(num,16);
    6. if(m.matches("^[a-f]+$")){
    7. System.out.println(num);
    8. break;
    9. }
    10. num++;
    11. }
    12. }
    13. }
    • ^ 表示匹配字符串的开始位置。
    • [a-f] 是一个字符集,表示匹配任何一个在其中的字符。这里的 a-f 包含了小写字母a到f。
    • + 代表前面的字符集出现一次或多次,也就是说整个字符串必须由一个或多个连续的a到f之间的字母组成。
    • $ 表示匹配字符串的结束位置。

    2. 列名

    1. public class Main {
    2. public static void main(String[] args) {
    3. int sum=26+26*26;
    4. for(char i='A';i<='Z';i++){
    5. for(char j='A';j<='Z';j++){
    6. for(char z='A';z<='Z';z++){
    7. sum++;
    8. if(sum==2022){
    9. System.out.print(i);
    10. System.out.print(j);
    11. System.out.println(z);
    12. }
    13. }
    14. }
    15. }
    16. }
    17. }

    3. 大乘积

    1. public class Main {
    2. public static void main(String[] args) {
    3. int count = 0;
    4. int[] nums = {99, 22, 51, 63, 72, 61, 20, 88, 40, 21, 63, 30, 11, 18, 99, 12, 93, 16, 7, 53, 64, 9, 28, 84, 34, 96, 52, 82, 51, 77};
    5. for (int i=0; i
    6. for (int j=i+1; j
    7. if (i != j){
    8. if (nums[i]*nums[j]>=2022){
    9. count++;
    10. }
    11. }
    12. }}
    13. }
    14. System.out.println(count);
    15. }
    16. }

    4. 最大连通

    连通性判断DFS最常见的应用。连通性判断是图论中的一个简单问题,给定一张图,图由点和边组成,要求找到互相连通的部分。连通性判断有三种实现方法:BFS、DFS、并查集,用DFS最简单方便。
      在竞赛题中,图常常用方格图给出,每个方格可以向上下左右四个方向走。
      DFS判断连通性,步骤如下:
      (1)从任意一个点u开始遍历,标记u已经搜过。一般从第一个点开始。
      (2)DFS搜索u的所有符合连通条件的邻居点。已经搜过的点标记为已经搜过,后面不用再搜。扩展u的邻居点时,应该判断这个邻居点是不是在边界内。
      (3)DFS结束,找到了与u连通的所有点,这是一个连通块。
      (4)不与u连通的、其他没有访问到的点,继续用上述步骤处理,找到所有的连通块。

    1. import java.util.Scanner;
    2. public class Main {
    3. static int[] dx = {-1, 0, 1, 0};
    4. static int[] dy = {0, 1, 0, -1};//四个方向
    5. static char[][] g;
    6. static int n = 30, m = 60;
    7. static int dfs(int x, int y) {//当前位于坐标[x,y]
    8. if (g[x][y] == '0') return 0;
    9. g[x][y] = '0';//把这个点从1改为0,后面不再搜它
    10. int cnt = 1;//统计这个连通块的大小
    11. for (int i = 0; i < 4; i++) { //遍历它的4个邻接
    12. int nx = x + dx[i], ny = y + dy[i];//一个邻居的坐标
    13. if (nx < 0 || ny < 0 || nx >= n || ny >= m) continue;//这个邻居是否在边界内
    14. cnt += dfs(nx, ny);
    15. }
    16. return cnt;
    17. }
    18. public static void main(String[] args) {
    19. Scanner scanner = new Scanner(System.in);
    20. g = new char[n][m];
    21. for (int i = 0; i < n; i++){
    22. //g[i] = scanner.nextLine().toCharArray(); 这行代码的用法是将用户从控制台输入的一行文本转化为字符数组,并将其赋值给二维字符数组 g 的第 i 行。
    23. g[i] = scanner.nextLine().toCharArray();
    24. }
    25. int ans = 0;
    26. for (int i = 0; i < n; i++)
    27. for (int j = 0; j < m; j++)
    28. if (g[i][j] == '1')
    29. ans = Math.max(ans, dfs(i, j));
    30. System.out.println(ans);
    31. }
    32. }

    5. 星期几

    1. import java.util.Scanner;
    2. public class Main {
    3. public static void main(String[] args) {
    4. Scanner scan = new Scanner(System.in);
    5. int w = scan.nextInt();
    6. int n = scan.nextInt();
    7. int m = (n+w)%7;
    8. if(m==0){
    9. System.out.println(7);
    10. }else{
    11. System.out.println(m);
    12. }
    13. scan.close();
    14. }
    15. }
  • 相关阅读:
    uni-app app端.m3u8类型流的播放
    springboot+rocketmq(5):实现批量消息
    利用递归实现深拷贝
    CSS基础
    flash转为html5工具
    精品基于NET实现的汽配网上商城系统
    discuz翻译-discuz翻译插件-discuz采集翻译
    Spring Cloud Alibaba —— 高可用流量控制组件
    17.3 实现无管道反向CMD
    制作windows安装程序的一些基本知识
  • 原文地址:https://blog.csdn.net/weixin_72151610/article/details/136634951