蓝桥杯历年真题省赛 java b组 2016年第七届 凑算式

news2024/11/20 14:15:11

一、题目

凑算式

     B      DEF
A + --- + ------- = 10
     C      GHI


     
  
这个算式中A~I代表1~9的数字,不同的字母代表不同的数字。

比如:
6+8/3+952/714 就是一种解法,
5+3/1+972/486 是另一种解法。

这个算式一共有多少种解法?

注意:你提交应该是个整数,不要填写任何多余的内容或说明性文字。

二、代码


package Lan2016;

public class C凑算式 {
    /*凑算式
    这个算式中A~I代表1~9的数字,不同的字母代表不同的数字。

      B   DEF
   A+---+-----=10
      C   GHI
    比如:
            6+8/3+952/714 就是一种解法,
            5+3/1+972/486 是另一种解法。
    这个算式一共有多少种解法?
    注意:你提交应该是个整数,不要填写任何多余的内容或说明性文字。*/
    /*
     * 大致思路:
     * 采用暴力的方法,A遍历1~9,B也遍历1~9,且B与A不能相同,
     * */
    //public static void main(String[] args) {
        /*int count  = 0;
        for (int x1 = 1; x1 < 10; x1++) {
            for (int x2 = 1; x2 < 10; x2++) {
                if (x2 == x1) continue;

                for (int x3 = 1; x3 < 10; x3++) {
                    if (x3 == x1 || x3 == x2) continue;

                    for (int x4 = 1; x4 < 10; x4++) {
                        if (x4 == x3 || x4 == x2 || x4 == x1) continue;

                        for (int x5 = 1; x5 < 10; x5++) {
                            if (x5 == x4 || x5 == x3 || x5 == x2 || x5 == x1) continue;

                            for (int x6 = 1; x6 < 10; x6++) {
                                if (x6 == x5 || x6 == x4 || x6 == x3 || x6 == x2 || x6 == x1) continue;

                                for (int x7 = 1; x7 < 10; x7++) {
                                    if (x7 == x6 || x7 == x5  || x7 == x4 || x7 == x3 || x7 == x2 || x7 == x1)
                                        continue;

                                    for (int x8 = 1; x8 < 10; x8++) {
                                        if (x8 == x7 || x8 == x6 || x8 == x5 || x8 == x4 || x8 == x3 || x8 == x2 || x8 == x1)
                                            continue;

                                        for (int x9 = 1; x9 < 10; x9++) {
                                            if (x9 == x8 || x9 == x7 || x9 == x6 || x9 == x5 || x9 == x4 || x9 == x3 || x9 == x2 || x9 == x1)
                                                continue;
                                            if (x1 + (x2 / x3) + ((x4 * 100 + x5 * 10 + x6) / (x7 * 100 + x8 * 10 + x9)) == 10) {
*//*
                                                System.out.println(x1 +" "+x2 + " " + x3 + " " + x4 +" "+ x5 +" " + x6 + " " +x7 +" "+ x8 + " "+x9);
*//*
                                                count++;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }

        }
        System.out.println(count);*/
    /*
     * 参考答案:
     * 需要用到深度优先遍历
     * */

    //主函数里面需要 调用深度优先的算法 并输出结果值
    public static void main(String[] args) {
        dfs(0);
        System.out.println(count);
    }

    //定义一个数组用来存1~9这9个数
    static int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9};
    static int count = 0;

    //定义深度优先的算法
    private static void dfs(int m) {


        //当输入进来的数字的个数大于等于9的时候,我们才判断看是否是满足条件的数
        if (m >= 9) {
            int x1 = arr[0];
            int x2 = arr[1];
            int x3 = arr[2];
            int x4 = (100 * arr[3] + 10 * arr[4] + arr[5]);
            int x5 = (100 * arr[6] + 10 * arr[7] + arr[8]);
            //如果按照下面这个式子来判断的话,会有小数的出现,而我们定义的是Int类型的,
        /*   x2   x4
          x1+---+-----=10
             x3   x5*/
            //所以把它转化成整数的形式,x1*x3*x5 + x2*x5 + x4 * x3 = 10*x3*x5
            if (x1 * x3 * x5 + x2 * x5 + x4 * x3 == 10 * x3 * x5) {
                //当满足条件的时候,我们计数器加一,
                count++;
                //输出数组中的数
                for (int i = 0; i < 9; i++) {
                    System.out.print(arr[i] + " ");
                }
                System.out.println();//换行
            }
            return;
        }

        //深度优先搜索
        for (int i = m; i < 9; i++) {
            //交换m和i的值
            swap(m, i);
            dfs(m+1);
            swap(m,i);
        }
    }

    //swap函数
    static void swap(int i, int j) {
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }
}

三、反思

        1.解题思路:我们要解决的问题就是 看哪些数字符合题目中的算式,我们需要找出所有可能的数字组合,将符合条件的加入到我们的计数器,

        2.我们将这些数字放到数组里面,方面我们可以进行数字的交换,方便遍历、访问、排序和搜索等,

        3.定义数组和计数器的时候,我们定义成static静态的,确保整个类都能访问,例如main中访问的count,dfs中访问的arr数组和count

        4.我们的深度优先算法的核心:

for (int i = m; i < 9; i++) {
            //交换m和i的值
            swap(m, i);
            dfs(m+1);
            swap(m,i);
        }

通过不断的交换、递归、回溯,来遍历到所有的可能,交换下标为m和i的值,从而有新的排列组合,递归调用dfs,传入m+1,来找下一个位置的排列组合。

        5.输出:29

有问题欢迎大家来提

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1514057.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构---C语言版 树 图解版力扣144/94/102

树的声明&#xff1a; #include<stdio.h> #include<stdlib.h> using namespace std;typedef char BiElemType; typedef struct BiTNode{BiElemType data;struct BiTNode* lchild;struct BiTNode* rchild; }BiTNode,*BiTree; //树中任何一个节点都是一个结构体&am…

优秀的前端框架vue,原理剖析与实战技巧总结【干货满满】

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属的专栏&#xff1a;前端零基础教学&#xff0c;实战进阶 景天的主页&#xff1a;景天科技苑 文章目录 Vuevue.js库的基本使用vue.js的M-V-VM思…

CountDownLatch介绍和使用

1. CountDownLatch是什么 CountDownLatch 是 Java.util.concurrent 包中的一个同步工具类&#xff0c;用于控制线程的执行顺序。它的主要作用是让一个或多个线程等待其他线程完成操作后再继续执行。 2. CountDownLatch 类常用方法 CountDownLatch(int count) 是 CountDownLa…

网工内推 | 国企、上市公司网工、运维,CCNA即可,补贴福利多

01 深圳新思 招聘岗位&#xff1a;网络工程师&#xff08;中电集团&#xff09; 职责描述&#xff1a; 1&#xff1a;负责办公室电脑的桌面运维&#xff0c;主要是windows维护与应用维护&#xff1b; 2&#xff1a;负责办公室网络设备配置&#xff0c;如防火墙&#xff0c;交换…

应用工程中获取Shapefile文件的图形信息并显示

本文用纯前端获取shp文件以及前后端交互的方式获取Shapefile文件中的图形信息 1.案例说明 在日常的WebGIS开发中&#xff0c;我们往往会面对&#xff0c;需要用户选择矢量数据&#xff0c;通过矢量数据中的空间范围信息&#xff0c;显示在界面上&#xff0c;并给用户的下一步…

目标检测C-RNN,Fast C-RNN,Faster C-RNN,SSD,Mask R-CNN 理论简单介绍

参考&#xff1a; https://zh-v2.d2l.ai/chapter_computer-vision/multiscale-object-detection.html R-CNN 及系列 区域卷积神经网络 region-based CNN R-CNN R-CNN首先从输入图像中选取若干&#xff08;例如2000个&#xff09;提议区域&#xff0c;并标注它们的类别和边界…

两个笔记本如何将一个笔记本作为另一个笔记本的拓展屏

需求是有两个笔记本&#xff0c;一个笔记本闲置&#xff0c;另一个笔记本是主力本。想将另一个闲置的笔记本连接到主力本上作为拓展屏使用。网上搜了好久&#xff0c;有一些人提到了&#xff0c;也有一些视频但是文章比较少。简单总结一下吧 上述需求有两种方式 第一种&#x…

学习vue3第五节(reactive 及其相关)

1、定义 reactive() 创建一个响应式代理对象&#xff0c;不同于ref()可以创建任意类型的数据&#xff0c;而reactive()只能是对象&#xff0c;会响应式的深层次解包任何属性&#xff0c;将其标注为响应式 响应式是基于ES6的proxy实现的代理对象&#xff0c;该proxy对象与原对象…

【C++】C++的初步认识

&#x1f338;博主主页&#xff1a;釉色清风&#x1f338;文章专栏&#xff1a;C&#x1f338;今日语录&#xff1a;自律以修身&#xff0c;自省以观己。自学以长识&#xff0c;自处以蓄力。 &#x1f33b;Hi~大家好&#xff0c;这次文章是C的初步认识&#xff0c;包括从C语言到…

【LeetCode: 2864. 最大二进制奇数 + 模拟 + 位运算】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

基于SSH的物流配送管理系统的设计与实现

摘 要 当今社会&#xff0c;物流配送已成为影响经济发展的显著因素。而随着社会信息化发展&#xff0c;建立有效的物流配送管理体系不仅能够减少物流成本&#xff0c;更能够提升工作人员的工作效率与客户的满意度。而基于B/S架构的物流配送管理体系&#xff0c;不仅具有良好的…

Navicat操作MYSQL

Navicat操作MYSQL 数据表的操作-创建表数据表的操作-修改、删除表数据的操作数据类型与约束常用数据类型数据约束 数据库备份与还原数据库的备份数据表的还原 数据表的操作-创建表 数据表的操作-修改、删除表 数据的操作 数据类型与约束 常用数据类型 整型&#xff1a;int 有符…

这是一份简单到没朋友的上手图数据库的图文教程

前几天和社区小伙伴友好交流&#xff08;闲聊&#xff09;&#xff0c;不少加入 NebulaGraph 的小伙伴虽然对图感兴趣&#xff0c;但是因为业务调整或者是时间缘故&#xff0c;最终没能用上 NebulaGraph。而他们当中不少的小伙伴说&#xff0c;春节我打算好好学习一番。既然大家…

打造你的HTML5打地鼠游戏:零基础入门教程

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…

mysql基于mycat实现读写分离

试验环境 基于mysql主从复制已经实现 mycat主机192.168.199.149&#xff0c;安装好java和jdk 数据库主机192.168.199.150 数据库从机192.168.199.151 149配置 下载mycat并解压 vim /root/mycat/conf/server.xml vim /root/mycat/conf/schema.xml 150是主数据库&#xff0…

[Linux][CentOs][Mysql]基于Linux-CentOs7.9系统安装并配置开机自启Mysql-8.0.28数据库

目录 一、准备工作&#xff1a;获取安装包和相应工具 &#xff08;一&#xff09;所需安装包 &#xff08;二&#xff09;安装包下载链接 &#xff08;三&#xff09;在服务器上创建文件夹并上传安装包 二、安装MySql &#xff08;一&#xff09;删除系统自带的mariadb …

OceanBase原理之内存管理

第1章 前言 1.1 多租户管理简介 OceanBase数据库中&#xff0c;应用了单集群多租户的设计&#xff0c;使得一个集群内能够创建多个彼此独立的租户。在OceanBase数据库&#xff0c;租户成为了资源分配的单位&#xff0c;同时还是数据库对象管理和资源管理的基础。 在某种程度…

代码随想录算法训练营Day44 ||leetCode 完全背包 || 518. 零钱兑换 II || 377. 组合总和 Ⅳ

完全背包 518. 零钱兑换 II 遍历硬币和金额&#xff0c;累加所有可能 class Solution { public:int change(int amount, vector<int>& coins) {vector<int> dp(amount1,0);dp[0]1;for (int i 0; i < coins.size();i){for(int j coins[i]; j < amount;…

安装PyTorch详细过程

安装anaconda 登录anaconda的官网下载&#xff0c;anaconda是一个集成的工具软件不需要我们再次下载。anaconda官网 跳转到这个页面如果你的Python版本正好是3.8版&#xff0c;那便可以直接根据系统去选择自己相应的下载版本就可以了。 但是如果你的Python版本号不是当前页面…

linux驱动——中断

1.Cortex-A系列的中断的简介 中断的基本概念&#xff1a;(interrupt) 中断本质上是系统内部的异常机制,当中断产生之后&#xff0c;他会停下当前正在执行的任务&#xff0c;转而去做其他的事情,在停下当前正在执行的任务之前,要先入栈&#xff08;保护现场,其他的事情做完之后…