栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

2020年蓝桥杯Java B组第二场题目+部分个人解析

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2020年蓝桥杯Java B组第二场题目+部分个人解析

#A:门牌制作 624

解一:

public static void main(String[] args) {

   int count=0;

    for(int i=1;i<=2020;i++) {

    int n=i;

   while(n>0) {

     if(n%10==2) {

      count++;

    }

    n/=10;

 }

}

System.out.println(count);

}

解二: 

public static void main(String[] args) {

        int cnt=0;

        for (int i = 1; i <= 2020; i++) {

            String s=i+"";

            for (int j = 0; j < s.length(); j++) {

                if(s.charAt(j)=='2') cnt++;

            }

        }

        System.out.println(cnt);

    }

#寻找 2020  16520

public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner = new Scanner(System.in);
		char[][] ch = new char[300][300];
		long sum = 0 ;
		for (int i = 0; i < ch.length; i++) {
			ch[i] = scanner.nextLine().toCharArray();
		}
		for (int i = 0; i < ch.length; i++) {
			for (int j = 0; j < ch[0].length; j++) {
				if (j+3 


#C: 蛇形填数 761

解题思路:先手写几行就可以发现,第一行第一列的值为1,第二行第二列的值为5.第三行第三列的值为13,第四行第四列的值为25,仔细观察就可以发现第i行第i列的值为  a = a + (i*4)。

public static void main(String[] args) {

// TODO Auto-generated method stub

     int sum = 1;

     for (int i = 0; i < 20; i++) {

         sum = sum + (i * 4);

}System.out.println(sum);

}

#D:七段码(dfs)  80


  解一:

static int[][] list = new int[][]{

            {0,1,0,0,0,1,0},

            {1,0,1,0,0,0,1},

            {0,1,0,1,0,0,1},

            {0,0,1,0,1,0,0},

            {0,0,0,1,0,1,1},

            {1,0,0,0,1,0,1},

            {0,1,1,0,1,1,0},

    };

    static Set> set = new HashSet<>();

    static boolean[] booleans = new boolean[7];



    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        ArrayList arr = new ArrayList<>();

        for (int i = 0 ; i < 7 ; i++){

            booleans[i] = true;

            arr.add(i);

            set.add(new HashSet<>(arr));

            dfs(arr);

            booleans[i] = false;

            arr.remove(arr.size()-1);

        }

        System.out.println(set.size());

    }



    private static void dfs(ArrayList arr) {

        set.add(new HashSet<>(arr));

        int last = arr.get(arr.size()-1);

        for (int i = 0 ; i < list[last].length ; i++){

            if (list[last][i] == 1 && !booleans[i]){

                booleans[i] = true;

                arr.add(i);

                dfs(arr);

                booleans[i] = false;

                arr.remove(arr.size()-1);

            }

        }

    }

  解二:

public static void main(String[] args) {
			creatGraph();
			dfs(1);
			System.out.println(count);
		}

		private static void creatGraph() {
			arr[1][2] = arr[1][6] = 1;
			arr[2][1] = arr[2][7] = arr[2][3] = 1;
			arr[3][2] = arr[3][4] = arr[3][7] = 1;
			arr[4][3] = arr[4][5] = 1;
			arr[5][4] = arr[5][6] = arr[5][7] = 1;
			arr[6][1] = arr[6][5] = arr[6][7] = 1;
		}

		private static void dfs(int k) {
			if (k > 7) {
				check();
				int q = 0;
				for (int i = 1; i <= 7; i++) {
					if (v[i] && res[i] == i) {
						q++;
					}
				}
				if (q == 1)
					count++;
				return;
			}
			v[k] = true;
			dfs(k + 1);
			v[k] = false;
			dfs(k + 1);
		}

		private static void check() {
			for (int i = 1; i <= 7; i++) {
				res[i] = i;
			}
			for (int i = 1; i <= 7; i++) {
				for (int j = 1; j <= 7; j++) {
					if (arr[i][j] != 0 && v[i] && v[j]) {
						int fx = find(i), fy = find(j);
						if (fx != fy) {
							res[fx] = fy;
						}
					}
				}
			}
		}

		private static int find(int p) {
			if (res[p] == p) {
				return p;
			} else {
				res[p] = find(res[p]);
				return res[p];
			}
		}

解三:

 static ArrayList[] list;
	        static HashSet set = new HashSet();

	        public static void main(String[] args) {
	            init();
	            for(int i=0; i<7; ++i) {
	                vis[0] = i;
	                set.add(1<();
	            }
	            list[0].add(1);
	            list[0].add(5);

	            list[1].add(0);
	            list[1].add(6);
	            list[1].add(2);

	            list[2].add(1);
	            list[2].add(3);
	            list[2].add(6);

	            list[3].add(2);
	            list[3].add(4);

	            list[4].add(3);
	            list[4].add(5);
	            list[4].add(6);

	            list[5].add(0);
	            list[5].add(4);
	            list[5].add(6);

	            list[6].add(1);
	            list[6].add(2);
	            list[6].add(4);
	            list[6].add(5);
	        }

#E:排序  jonmlkihgfedcba

--------------------------------------------------------------------

--------------------------------------------------------------------

#F:成绩分析(模拟、暴力)

public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		  int n=sc.nextInt();
		  int a,max=0,min=100;
		  double sum=0;
		  for(int i=0;i 


#G:单词分析(字符串)

 

public static void main(String[] args) {

 

Scanner sc=new Scanner(System.in);

String str=sc.next();

int[]arr =new int[26];

int a=0;;char ch = 'a';

for(int i=0;ia) {

     a=arr[str.charAt(i)-97];

     ch=str.charAt(i);

    }else if(arr[str.charAt(i)-97]==a) {

     if(ch-str.charAt(i)>0) {

     a=arr[str.charAt(i)-97];

         ch=str.charAt(i);

     }

    }

}

System.out.println(ch); System.out.println(a);





}

#H: 数字三角形(DP)


   

 public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        int n=scanner.nextInt();

        int [][]arr=new int[n+1][n+1];

        for (int i = 1; i < arr.length; i++) {

            for (int j = 1; j <= i; j++) {

                int s=scanner.nextInt();

                arr[i][j]=s+Math.max(arr[i-1][j-1],arr[i-1][j]);

            }

        }

        System.out.println(n%2==1?arr[n][n/2+1]:Math.max(arr[n][n/2],arr[n][n/2+1]));

    }

}

  解二:

  public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        int n = scanner.nextInt();

        //base case : f(1) = a1

        int[][] dp = new int[n][n+1];

        int temp = scanner.nextInt();

        dp[0][0] = temp;

        int max = Integer.MIN_VALUE;

        for (int i = 2; i <= n; i++) {

            for (int j = 0; j < i; j++) {

                temp = scanner.nextInt();

                if (j != 0 && j != (i-1)) {

                    dp[i-1][j] = Integer.max(dp[i-2][j-1],dp[i-1][j])+temp;

                }else if (j == 0) {

                    dp[i-1][j] = dp[i-2][j]+temp;

                }else {

                    dp[i-1][j] = dp[i-2][j-1]+temp;

                }

                if(dp[i-1][j] > max)

                    max = dp[i-1][j];

            }

            dp[i-1][n] = max;

            max = Integer.MIN_VALUE;

        }

        System.out.println(dp[n-1][n]);

        scanner.close();

}

# I:子串分值和(规律题吧)

 

解一:   

 public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        int[] arr = new int[26];

        long res = 0;

        for(int i = 0;i < 26;i++){

            arr[i] = -1;

        }

        String s = sc.nextLine();

        String[] str = s.split("");

        int willIndex = str.length;

        for(int i = 0;i < str.length;i++){

            int lastIndex = arr[str[i].charAt(0)-97];

            res += (long)(i - lastIndex)*(willIndex - i);

            arr[str[i].charAt(0)-97] = i;

        }

        System.out.println(res);

    }

  解二:

public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        String str = sc.next();

        int[] nums = new int[26];

        long res = 0;

        long n = str.length();

        str = "0"+str;

        for (int i = 1; i < str.length(); i++) {

           

            res += (i - nums[str.charAt(i) - 'a']) * (n - i+1);

         

            nums[str.charAt(i) - 'a'] = i;

        }

        System.out.println(res);

    }

#J: 装饰珠

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/781625.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号