蓝桥杯第六届国赛javab组题目解析

这篇博客主要解析了蓝桥杯比赛中的六道题目,包括计算降序排列的3位分机号码总数、解决五星填数问题、实现二叉树的显示功能、找出穿越雷区的最短路径、完成表格计算任务以及计算不同瓷砖铺满机房的方案数。涉及算法和数据结构的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一题:


标题:分机号

X老板脾气古怪,他们公司的电话分机号都是3位数,老板规定,所有号码必须是降序排列,且不能有重复的数位。比如:

751,520,321 都满足要求,而,
766,918,201 就不符合要求。

现在请你计算一下,按照这样的规定,一共有多少个可用的3位分机号码?

请直接提交该数字,不要填写任何多余的内容。

 

手算得答案:8+7*2+6*3+5*4+4*5+3*6+2*7+1*8=120

int x=8+7*2+6*3+5*4+4*5+3*6+2*7+1*8;
		System.out.println(x);

 

第二题:


标题:五星填数

如【图1.png】的五星图案节点填上数字:1~12,除去7和11。
要求每条直线上数字和相等。

如图就是恰当的填法。

请你利用计算机搜索所有可能的填法有多少种。
注意:旋转或镜像后相同的算同一种填法。

请提交表示方案数目的整数,不要填写任何其它内容。

 

import java.util.Scanner;

public class Main {
	static int sum=0;
	public static void main(String[] args){
		Scanner in=new Scanner(System.in);
		int[] arr={1,2,3,4,5,6,8,9,10,12};
		p(arr,0);
		System.out.println(sum/10);
	}
	public static void p(int[] ar,int k){//全排列
		if(k==9){
			pan(ar);
			return;
		}
		for(int i=k;i<10;i++){
			int t=ar[k];
			ar[k]=ar[i];
			ar[i]=t;
			p(ar,k+1);
			t=ar[k];
			ar[k]=ar[i];
			ar[i]=t;
		}
	}
	public static void pan(int[] ar){//判断合格
		int pa=ar[6]+ar[4]+ar[1]+ar[7];
		if(ar[7]+ar[3]+ar[0]+ar[8]!=pa||ar[8]+ar[2]+ar[4]+ar[5]!=pa||ar[5]+ar[1]+ar[3]+ar[9]!=pa||ar[6]+ar[2]+ar[0]+ar[9]!=pa)
			return;
		else
			sum++;
	}
}

太简单,全排列加判断即可

 

第三题:

 


标题:显示二叉树

排序二叉树的特征是:
某个节点的左子树的所有节点值都不大于本节点值。
某个节点的右子树的所有节点值都不小于本节点值。

为了能形象地观察二叉树的建立过程,小明写了一段程序来显示出二叉树的结构来。


class BiTree
{
    private int v;
    private BiTree l;
    private BiTree r;
    
    public BiTree(int v){
        this.v = v;
    }
    
    public void add(BiTree the){
        if(the.v < v){
            if(l==null) l = the;
            else l.add(the);
        }
        else{
            if(r==null) r = the;
            else r.add(the);
        }
    }
    
    public int getHeight(){
        int h = 2;
        int hl = l==null? 0 : l.getHeight();
        int hr = r==null? 0 : r.getHeight();
        return h + Math.max(hl,hr);
    }
    
    public int getWidth(){
        int w = (""+v).length();
        if(l!=null) w += l.getWidth();
        if(r!=null) w += r.getWidth();
        return w;
    }
    
    public void show(){
        char[][] buf = new char[getHeight()][getWid

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值