2020年4月蓝桥杯第二次模拟赛解题报告(本科组)Java语言 第三题

简介: 2020年4月蓝桥杯第二次模拟赛解题报告(本科组)Java语言 第三题

3 .单词重排

【问题描述】

将LANQIAO中的字母重新排列,可以得到不同的单词,如LANQIAO、AAILNOQ等,注意这7个字母都要被用上,单词不一定有具体的英文意义。

请问,总共能排列如多少个不同的单词。

【答案提交】

这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。

解析

求全排列,去重,计数

结果:2520

1、利用Java的Set特性可以自动对目标答案去重

2、利用深度优先遍历实现不断形成新的不同答案排列

代码如下:

import java.util.HashSet;
import java.util.Set;
public class Main {
  static char[] a="LANQIAO".toCharArray();//存放所要测试的字符
  static Set<String> ans=new HashSet<String>();//存放所有数据结果
  static char[] temp=new char[a.length];//测试数组,存放每种结果
  static boolean[] vis=new boolean[a.length];//判断数组,判断每个位置是否访问过
  public static void main(String[] args) {
    dfs(0);
    System.out.println(ans.size());
  }
  public static void dfs(int k) {
  //如果k==7,说明temp数组已满,将结果存入set中(用set可以去重)
    if(k==7) {
      ans.add(new String(temp));
      return ;
    }
  //深度优先遍历,将每个判断数组进行对反,然后不断回溯,去放开每个位置,
    for(int i=0;i<a.length;i++) {
      if(!vis[i]) {
        temp[k]=a[i];
        vis[i]=true;
        dfs(k+1);
        vis[i]=false;
      }
    }
  }
}


目录
相关文章
|
2月前
|
存储 人工智能 算法
数据结构与算法细节篇之最短路径问题:Dijkstra和Floyd算法详细描述,java语言实现。
这篇文章详细介绍了Dijkstra和Floyd算法,这两种算法分别用于解决单源和多源最短路径问题,并且提供了Java语言的实现代码。
92 3
数据结构与算法细节篇之最短路径问题:Dijkstra和Floyd算法详细描述,java语言实现。
|
1月前
|
监控 Java API
如何使用Java语言快速开发一套智慧工地系统
使用Java开发智慧工地系统,采用Spring Cloud微服务架构和前后端分离设计,结合MySQL、MongoDB数据库及RESTful API,集成人脸识别、视频监控、设备与环境监测等功能模块,运用Spark/Flink处理大数据,ECharts/AntV G2实现数据可视化,确保系统安全与性能,采用敏捷开发模式,提供详尽文档与用户培训,支持云部署与容器化管理,快速构建高效、灵活的智慧工地解决方案。
|
4月前
|
Java Maven
使用java语言制作一个窗体(弹窗),用来收集用户输入的内容
该博客文章介绍了如何使用Java Swing中的JFrame创建一个窗体来收集用户输入的内容,并提供了详细的实现步骤和完整代码示例。
使用java语言制作一个窗体(弹窗),用来收集用户输入的内容
|
1月前
|
SQL 安全 Java
安全问题已经成为软件开发中不可忽视的重要议题。对于使用Java语言开发的应用程序来说,安全性更是至关重要
在当今网络环境下,Java应用的安全性至关重要。本文深入探讨了Java安全编程的最佳实践,包括代码审查、输入验证、输出编码、访问控制和加密技术等,帮助开发者构建安全可靠的应用。通过掌握相关技术和工具,开发者可以有效防范安全威胁,确保应用的安全性。
54 4
|
5月前
|
Oracle 安全 Java
Java语言简介及发展
Java语言简介及发展
|
2月前
|
Java 程序员 编译器
在Java编程中,保留字(如class、int、for等)是具有特定语法意义的预定义词汇,被语言本身占用,不能用作变量名、方法名或类名。
在Java编程中,保留字(如class、int、for等)是具有特定语法意义的预定义词汇,被语言本身占用,不能用作变量名、方法名或类名。本文通过示例详细解析了保留字的定义、作用及与自定义标识符的区别,帮助开发者避免因误用保留字而导致的编译错误,确保代码的正确性和可读性。
60 3
|
2月前
|
算法 C++
2022年第十三届蓝桥杯大赛C/C++语言B组省赛题解
2022年第十三届蓝桥杯大赛C/C++语言B组省赛题解
51 5
|
2月前
|
移动开发 Java 大数据
深入探索Java语言的核心优势与现代应用实践
【10月更文挑战第10天】深入探索Java语言的核心优势与现代应用实践
95 4
|
2月前
|
存储 Java 数据安全/隐私保护
Java中的域,什么是域?计算机语言中的域是什么?(有代码实例)
文章解释了Java中域的概念,包括实例域、静态域、常量域和局部域,以及它们的特点和使用场景。
82 2
|
2月前
|
Java 数据安全/隐私保护 C++
Java语言关键字
Java语言关键字
35 2