算法与设计——枚举——ch_01

2024-05-01 04:38
文章标签 算法 设计 01 ch 枚举

本文主要是介绍算法与设计——枚举——ch_01,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题  目:

04五个数字,组成5位数,每个数字用一次,但十位和百位不能为3(当然万位不能为0),输出所有可能的五位数。

题目分析:

显然这是一个枚举算法中区间枚举的经典案例,从“04五个数字,组成5位数”可以看出用五重循环实现,限制条件是“每个数字用一次,但十位和百位不能为3(当然万位不能为0”。第一重循环确定万位,第二重循环确定千位。。。以此类推到第五重循环确定个位。

枚举算法(区间枚举)的框架:

n=0;
for(k=<区间下限>;k<=<区间上限>;k++)    //根据实际情况控制枚举范围
{<运算操作序列>if(<约束条件>)    //根据约束条件实施筛选{System.out.print(<满足要求的解>);    //逐一输出问题的解n++;    //统计解的个数}
}
System.out.print(<解的个数>);    //输出解的个数
代码:

public class ch_01 {public static void main(String [] args){for(int i=1;i<=4;i++)//第一重循环确定万位for(int j=0;j<=4;j++)//确定千位{if(j==i)//和万位重复跳出本次循环continue;for(int k=0;k<=4;k++)//确定百位{if(k==3||k==i||k==j)//百位不为3,和万位或者千位重复跳出循环continue;for(int l=0;l<=4;l++)//确定十位{if(l==3||l==i||l==j||l==k)//十位不为3,和万位或者千位或百位重复跳出循环continue;for(int m=0;m<=4;m++)//确定个位{if(m==i||m==j||m==k||m==l)//和万位或者千位或百位或者十位重复跳出循环continue;System.out.println(i+""+j+""+k+""+l+""+m);//输出每一组成立的数}}	}}}
}
运行结果:

10243 10423 12043 12403 13024 13042 13204 13240 13402 13420 14023 14203
20143 20413 21043 21403 23014 23041 23104 23140 23401 23410 24013 24103
30124 30142 30214 30241 30412 30421 31024 31042 31204 31240 31402 31420

32014 32041 32104 32140 32401 32410 34012 34021 34102 34120 34201 34210
40123 40213 41023 41203 42013 42103 43012 43021 43102 43120 43201 43210

这篇关于算法与设计——枚举——ch_01的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/950736

相关文章

Kotlin 枚举类使用举例

《Kotlin枚举类使用举例》枚举类(EnumClasses)是Kotlin中用于定义固定集合值的特殊类,它表示一组命名的常量,每个枚举常量都是该类的单例实例,接下来通过本文给大家介绍Kotl... 目录一、编程枚举类核心概念二、基础语法与特性1. 基本定义2. 带参数的枚举3. 实现接口4. 内置属性三、

C#之枚举类型与随机数详解

《C#之枚举类型与随机数详解》文章讲解了枚举类型的定义与使用方法,包括在main外部声明枚举,用于表示游戏状态和周几状态,枚举值默认从0开始递增,也可手动设置初始值以生成随机数... 目录枚举类型1.定义枚举类型(main外)2.使用生成随机数总结枚举类型1.定义枚举类型(main外)enum 类型名字

C语言自定义类型之联合和枚举解读

《C语言自定义类型之联合和枚举解读》联合体共享内存,大小由最大成员决定,遵循对齐规则;枚举类型列举可能值,提升可读性和类型安全性,两者在C语言中用于优化内存和程序效率... 目录一、联合体1.1 联合体类型的声明1.2 联合体的特点1.2.1 特点11.2.2 特点21.2.3 特点31.3 联合体的大小1

Mysql中设计数据表的过程解析

《Mysql中设计数据表的过程解析》数据库约束通过NOTNULL、UNIQUE、DEFAULT、主键和外键等规则保障数据完整性,自动校验数据,减少人工错误,提升数据一致性和业务逻辑严谨性,本文介绍My... 目录1.引言2.NOT NULL——制定某列不可以存储NULL值2.UNIQUE——保证某一列的每一

Java中的雪花算法Snowflake解析与实践技巧

《Java中的雪花算法Snowflake解析与实践技巧》本文解析了雪花算法的原理、Java实现及生产实践,涵盖ID结构、位运算技巧、时钟回拨处理、WorkerId分配等关键点,并探讨了百度UidGen... 目录一、雪花算法核心原理1.1 算法起源1.2 ID结构详解1.3 核心特性二、Java实现解析2.

C++11作用域枚举(Scoped Enums)的实现示例

《C++11作用域枚举(ScopedEnums)的实现示例》枚举类型是一种非常实用的工具,C++11标准引入了作用域枚举,也称为强类型枚举,本文主要介绍了C++11作用域枚举(ScopedEnums... 目录一、引言二、传统枚举类型的局限性2.1 命名空间污染2.2 整型提升问题2.3 类型转换问题三、C

MyBatis设计SQL返回布尔值(Boolean)的常见方法

《MyBatis设计SQL返回布尔值(Boolean)的常见方法》这篇文章主要为大家详细介绍了MyBatis设计SQL返回布尔值(Boolean)的几种常见方法,文中的示例代码讲解详细,感兴趣的小伙伴... 目录方案一:使用COUNT查询存在性(推荐)方案二:条件表达式直接返回布尔方案三:存在性检查(EXI

Java 枚举的基本使用方法及实际使用场景

《Java枚举的基本使用方法及实际使用场景》枚举是Java中一种特殊的类,用于定义一组固定的常量,枚举类型提供了更好的类型安全性和可读性,适用于需要定义一组有限且固定的值的场景,本文给大家介绍Jav... 目录一、什么是枚举?二、枚举的基本使用方法定义枚举三、实际使用场景代替常量状态机四、更多用法1.实现接

使用雪花算法产生id导致前端精度缺失问题解决方案

《使用雪花算法产生id导致前端精度缺失问题解决方案》雪花算法由Twitter提出,设计目的是生成唯一的、递增的ID,下面:本文主要介绍使用雪花算法产生id导致前端精度缺失问题的解决方案,文中通过代... 目录一、问题根源二、解决方案1. 全局配置Jackson序列化规则2. 实体类必须使用Long封装类3.

Springboot实现推荐系统的协同过滤算法

《Springboot实现推荐系统的协同过滤算法》协同过滤算法是一种在推荐系统中广泛使用的算法,用于预测用户对物品(如商品、电影、音乐等)的偏好,从而实现个性化推荐,下面给大家介绍Springboot... 目录前言基本原理 算法分类 计算方法应用场景 代码实现 前言协同过滤算法(Collaborativ