[蓝桥杯][算法提高VIP]阮小二买彩票[递归全排列]

2024-02-07 13:08

本文主要是介绍[蓝桥杯][算法提高VIP]阮小二买彩票[递归全排列],希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目 1578: [蓝桥杯][算法提高VIP]阮小二买彩票

时间限制: 1Sec 内存限制: 128MB 提交: 348 解决: 153

题目描述
在同学们的帮助下,阮小二是变的越来越懒了, 连算账都不愿意自己亲自动手了,每天的工作就是坐在电脑前看自己的银行账户的钱是否有变多。可是一段时间观察下来,阮小二发现自己账户的钱增长好慢啊,碰 到节假日的时候连个铜板都没进,更郁闷的是这些天分文不进就算了,可恨的是银行这几天还有可能“落井下石”(代扣个人所得税),看着自己账户的钱被负增长 了,阮小二就有被割肉的感觉(太痛苦了!),这时阮小二最大的愿望无疑是以最快的速度日进斗金,可什么方法能够日进斗金呢?抢银行(老本行)?不行,太危 险,怕有命抢没命花;维持现状?受不了,搂钱太慢了!想来想去,抓破脑袋之后,终于想到了能快速发家致富的法宝----买彩票,不但挣了钱有命花,运气好 的话,可以每天中他个几百万的,岂不爽哉!抱着这种想法,阮小二开始了他的买彩票之旅。想法是“好的”(太天真了OR 太蠢了),可是又发现自己的数学功底太差,因为不知道数字都有哪些组合排列?那现在就请同学们写个递归程序,帮助阮小二解决一下这个问题吧!

注意:输出数据中不能有重复的排列
输入
不超过6位数的正整数N,注意:构成正整数N的数字可重复
输出
组成正整数N的所有位数的全排列,这些排列按升序输出,每个排列占一行。
样例输入
3121
样例输出
1123
1132
1213
1231
1312
1321
2113
2131
2311
3112
3121
3211


另一篇讲述全排列的文章。


import java.util.Arrays;
import java.util.Comparator;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet;import javax.naming.spi.DirStateFactory.Result;public class Main {/*** @param args*/public static Set<String> result=new TreeSet<String>();//存储结果,TreeSet根据自然排序public static int arr[];public static void main(String[] args) {Scanner sc=new Scanner(System.in);String str=sc.next();arr=new int[str.length()];//将字符串存入数组for (int i = 0; i <str.length(); i++) {arr[i]=Integer.parseInt(str.charAt(i)+"");}F(0);//输出for (String item : result) {System.out.println(item);}}//全排列递归//n:当前排列的位数public static void F(int n) {if (n==arr.length) {String tempResult="";for (int item : arr) {tempResult+=(item+"");}result.add(tempResult);//得到一个排列结果return;}else {for (int i = n; i < arr.length; i++) {//交换与还原int temp=arr[i];arr[i]=arr[n];arr[n]=temp;F(n+1);temp=arr[n];arr[n]=arr[i];arr[i]=temp;}}}
}

这篇关于[蓝桥杯][算法提高VIP]阮小二买彩票[递归全排列]的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Java使用MethodHandle来替代反射,提高性能问题

《Java使用MethodHandle来替代反射,提高性能问题》:本文主要介绍Java使用MethodHandle来替代反射,提高性能问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录一、认识MethodHandle1、简介2、使用方式3、与反射的区别二、示例1、基本使用2、(重要)

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

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

mysql递归查询语法WITH RECURSIVE的使用

《mysql递归查询语法WITHRECURSIVE的使用》本文主要介绍了mysql递归查询语法WITHRECURSIVE的使用,WITHRECURSIVE用于执行递归查询,特别适合处理层级结构或递归... 目录基本语法结构:关键部分解析:递归查询的工作流程:示例:员工与经理的层级关系解释:示例:树形结构的数

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

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

openCV中KNN算法的实现

《openCV中KNN算法的实现》KNN算法是一种简单且常用的分类算法,本文主要介绍了openCV中KNN算法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录KNN算法流程使用OpenCV实现KNNOpenCV 是一个开源的跨平台计算机视觉库,它提供了各

C语言函数递归实际应用举例详解

《C语言函数递归实际应用举例详解》程序调用自身的编程技巧称为递归,递归做为一种算法在程序设计语言中广泛应用,:本文主要介绍C语言函数递归实际应用举例的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录前言一、递归的概念与思想二、递归的限制条件 三、递归的实际应用举例(一)求 n 的阶乘(二)顺序打印

springboot+dubbo实现时间轮算法

《springboot+dubbo实现时间轮算法》时间轮是一种高效利用线程资源进行批量化调度的算法,本文主要介绍了springboot+dubbo实现时间轮算法,文中通过示例代码介绍的非常详细,对大家... 目录前言一、参数说明二、具体实现1、HashedwheelTimer2、createWheel3、n

SpringBoot实现MD5加盐算法的示例代码

《SpringBoot实现MD5加盐算法的示例代码》加盐算法是一种用于增强密码安全性的技术,本文主要介绍了SpringBoot实现MD5加盐算法的示例代码,文中通过示例代码介绍的非常详细,对大家的学习... 目录一、什么是加盐算法二、如何实现加盐算法2.1 加盐算法代码实现2.2 注册页面中进行密码加盐2.

Java时间轮调度算法的代码实现

《Java时间轮调度算法的代码实现》时间轮是一种高效的定时调度算法,主要用于管理延时任务或周期性任务,它通过一个环形数组(时间轮)和指针来实现,将大量定时任务分摊到固定的时间槽中,极大地降低了时间复杂... 目录1、简述2、时间轮的原理3. 时间轮的实现步骤3.1 定义时间槽3.2 定义时间轮3.3 使用时

Jackson库进行JSON 序列化时遇到了无限递归(Infinite Recursion)的问题及解决方案

《Jackson库进行JSON序列化时遇到了无限递归(InfiniteRecursion)的问题及解决方案》使用Jackson库进行JSON序列化时遇到了无限递归(InfiniteRecursi... 目录解决方案‌1. 使用 @jsonIgnore 忽略一个方向的引用2. 使用 @JsonManagedR