每日一练:组合不重复的四位数字

news2024/9/26 1:23:25

在这里插入图片描述

问题:有四个数字“1、2、3、4”,能组成多少个互不相同且无重复数字的四位数?各是多少?

程序分析

  可填在千位、百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。

实现方法1

  1)使用四层嵌套循环,每一层循环选择一个数字。
  2)在循环过程中,判断所选的四个数字是否互不相同,如果是则输出这个四位数。

# 循环遍历所有可能的组合
count = 0
for i in range(1, 5):  # 第一个数字
    for j in range(1, 5):  # 第二个数字
        for k in range(1, 5):  # 第三个数字
            for l in range(1, 5):  # 第四个数字
                # 判断四个数字是否互不相同
                if i != j and i != k and i != l and j != k and j != l and k != l:
                    # 组合成一个四位数并输出
                    result = i * 1000 + j * 100 + k * 10 + l
                    count += 1
                    print(f'第{count}个数是:{result}')

实现方法2

  使用 itertools 模块中的 permutations 函数来生成所有可能的排列,然后筛选满足条件的结果。

from itertools import permutations

# 四个数字
digits = [1, 2, 3, 4]

# 生成所有可能的排列
permutation_list = permutations(digits)

count = 0
# 遍历排列并输出满足条件的四位数
for perm in permutation_list:
    result = perm[0] * 1000 + perm[1] * 100 + perm[2] * 10 + perm[3]
    count += 1
    print(f'第{count}个数是:{result}')

实现方式3

  递归的思路是从左到右依次确定每一位的数字,并在确定了前几位的情况下递归地确定后面的位数。

def generate_four_digit_numbers(digits, current_number, used_digits, count):
    """
    递归生成所有可能的四位数,并输出格式化的结果。

    Parameters:
    - digits: 可选数字列表
    - current_number: 当前正在生成的数
    - used_digits: 已经使用过的数字列表
    - count: 当前是第几个满足条件的数

    Returns:
    - count: 更新后的计数值
    """
    if len(used_digits) == 4:
        # 输出格式化的结果
        print(f"第{count}个数是:{current_number}")
        return count + 1

    new_count = count
    for digit in digits:
        if digit not in used_digits:
            new_number = current_number * 10 + digit
            new_used_digits = used_digits + [digit]
            # 递归调用,更新 count
            new_count = generate_four_digit_numbers(digits, new_number, new_used_digits, new_count)

    return new_count

# 四个数字
digits = [1, 2, 3, 4]

# 调用递归函数,初始 count 为 1
generate_four_digit_numbers(digits, 0, [], 1)

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

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

相关文章

909-2014-T1

文章目录 1.原题2.算法思想3.关键代码4.完整代码5.运行结果 1.原题 为带表头的单链表类Chain编写一个成员函数Reverse,该函数对链表进行逆序操作(将链表中的结点按与原序相反的顺序连接),要求逆序操作就地进行,不分配…

Linux学习第44天:Linux 多点电容触摸屏实验:难忘记第一次牵你手的温存

Linux版本号4.1.15 芯片I.MX6ULL 大叔学Linux 品人间百味 思文短情长 本章的思维导图内容如下: 二、硬件原理图分析 三、实验程序编写 1、修改设备树 1)、添加FT5426所使用的IO 一个复位 IO、一个中断 IO、…

【C++进阶之路】第五篇:哈希

文章目录 一、unordered系列关联式容器1.unordered_map(1)unordered_map的介绍(2)unordered_map的接口说明 2. unordered_set3.性能对比 二、底层结构1.哈希概念2.哈希冲突3.哈希函数4.哈希冲突解决(1)闭散…

【Python3】【力扣题】338. 比特位计数

【力扣题】题目描述: 题解:从0到n的整数,逐一统计二进制中1的个数,记录在一个新列表中。 【Python3】代码: 1、解题思路:Python函数。 知识点:bin(...):转为二进制字符串&#xff…

秋招JAVA面经总结

面试的范围是Java基础+Java并发+Java框架+mysql+网络。 Java基础 重载与重写有什么区别? 重载(Overloading)指的是在同一个类中,可以有多个同名方法,它们具有不同的参数列表(参数类型、参数个数或参数顺序不同),编译器根据调用时的参数类型来决定调用哪个方法。 重写…

用VS编译ROS包

扩展安装 在扩展中搜索并安装ROS、C、python、CMake和CMake Tools。 打开工作空间 文件→打开文件夹 新建功能包 右键src文件夹,选择新建功能包(通常是最后一条命令) 编译 如果需要新建终端的话,就点击下图中的加号 创建la…

Java,数据结构与集合源码,数据结构概述

目录 数据结构概念: 数据结构的研究对象: 研究对象一,数据间逻辑关系: 研究对象二,数据的存储结构(或物理结构): 研究对象三:运算结构 数据结构的相关介绍&#xff…

泵类设备常见的5种故障及监测方法

在各种工业领域中,泵是一种关键设备,用于输送液体或气体。然而,泵类设备常常会面临各种故障,这可能导致生产停顿和生产效率下降。为了及时监测并解决这些故障,设备状态监测系统成为一种重要的工具。本文将介绍泵类设备…

CSDN专栏设置

文章目录 一、规则1.1、专栏数量与等级关联1.2、等级与积分关联1.3、积分1.3.1、积分获取1.3.2、积分被扣 二、配置2.1、入口2.2、新建2.2.1、一级专栏2.2.2、二级专栏 2.3、快捷编辑2.4、拖拽 一、规则 写了一阵子CSDN博客后,发现自己新增专栏的时候提示不能再新增…

kubeadm join 192.168.10.16:6443 --token xxx报错Failed to request cluster-info

1、node节点执行 kubeadm join 192.168.10.16:6443 --token hak4zi.hrib9uv4p62t1uok --discovery-token-ca-cert-hash sha256:4337638eef783ee6a66045ad699722079e071c2dfbaa21e37d3174f04d58ea97 --v2 报错 [discovery] Failed to request cluster-info, will try again: G…

华为云cce中环境变量的使用

如上图,cce中的环境变量可配置。 配置后的这些参数怎么用呢? 我们可以在docker打包前在springboot的配置文件中配置,cce在启动的时候会调用环境变量中的设置。 如上图,配置的东西以key值标记,冒号后面的是默认配置项…

编译器安全

在供应链安全中,大家一直关注采用SCA工具分析开源组件中的安全漏洞以及许可证的合规性。但是对于底层软件开发使用的编译器、链接器等安全却容易被忽视,其中有没有安全漏洞、有没有运行时缺陷、有没有被植入漏洞、木马等,似乎并没有引起多少人…

想面试前端工程师,必须掌握哪些知识和技能?【云驻共创】

在当今的数字化时代,前端工程师扮演着至关重要的角色。他们负责设计和开发用户界面,使得用户能够与应用程序或网站进行互动。为了找到最出色的前端工程师,你需要了解哪些技能和知识是必备的,同时也要掌握一些面试技巧和常见的面试…

上门维修安装派单系统小程序APP开发之会员级别设计深度解析

啄木鸟鲁班大师上门安装维修平台APP开发之VIP会员解析,在APP或者小程序里设置的会员叫VIP级别会员,系统一共分为4种会员,注册会员,正式会员,VIP金卡会员,VIP钻卡会员。注册用户是指注册了平台但是没有消费记…

【Windows 常用工具系列 11 -- win11怎么设置不睡眠熄屏 |win11设置永不睡眠的方法】

文章目录 win11 怎么设置不睡眠熄屏 使用笔记本电脑的时候,如果离开电脑时间稍微长一点就会发现息屏了,下面介绍 设置 Win11 永不睡眠息屏的方法,有需要的朋友们快来看看以下详细的教程。 win11 怎么设置不睡眠熄屏 在电脑桌面上&#xff0c…

说一下类的生命周期

👽System.out.println(“👋🏼嗨,大家好,我是代码不会敲的小符,双非大四,Java实习中…”); 📚System.out.println(“🎈如果文章中有错误的地方,恳请大家指正&a…

同为科技(TOWE)桌面PDU插排:一款可以DIY定制的“超级插座”

当今社会,各种电子产品和家用电器已成为人们日常生活中不可或缺的一部分,在带给人们便利的同时,也使得电力使用变得更加频繁和重要。然而,当前市面上很多普通插座由于功能单一、材质粗劣、插口数量受限、充电速度过慢、插头间互相…

Vue 项目实战——如何在页面中展示 PDF 文件以及 PDFObject 插件实战

文章目录 📋前言🎯使用 HTML 标签🧩 embed 标签🧩 object标签🧩 iframe标签🧩完整代码 🎯使用 PDFObject 插件🧩为什么使用 PDFObject 插件(AI翻译)&#x1f…

Gitlab安装与操作

GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。 可通过Web界面进行访问公开的或者私人项目。它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的…