Java 第十一届 蓝桥杯 省模拟赛 字母重新排列

我就是我 2023-07-25 08:41 273阅读 0赞

字母重新排列

题目
问题描述

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

答案提交

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

异常喜欢这种全排列(不需要求出来每种排列的情况,它只需要得数)(●ˇ∀ˇ●)

全排列的个数就是
长度(长度-1)\(长度-2)…………1*

也就是7 * 6 * 5 * 4 * 3 * 2 * 1的结果

在这里插入图片描述

裘德玛得,这里有一个重复的A所以我们还要除一个二,结果是( 2520 )全都是坑
在这里插入图片描述

或者直接上全排列代码

  1. package 省模拟赛;
  2. import java.util.ArrayList;
  3. import java.util.HashSet;
  4. import java.util.Set;
  5. public class 字母重新排列 {
  6. public static int count = 0;
  7. public static ArrayList<Integer> list = new ArrayList<Integer>();
  8. public static Set<String> set = new HashSet<String>();
  9. static String[] strs={ "L","A","N","Q","I","A","O"};
  10. public static void main(String[] args) {
  11. f();
  12. System.out.println(set.size());
  13. }
  14. public static void f() {
  15. if (list.size() >= 7) {
  16. StringBuilder s=new StringBuilder("");;
  17. for (int i = 0; i <=6; i++) {
  18. s.append(strs[list.get(i)-1]);
  19. }
  20. set.add(s.toString());
  21. return;
  22. }
  23. for (int i = 1; i <=7 ; i++) {
  24. if (!list.contains(i)) {
  25. list.add(i);
  26. f();
  27. list.remove(list.size() - 1);
  28. }
  29. }
  30. }
  31. }

发表评论

表情:
评论列表 (有 0 条评论,273人围观)

还没有评论,来说两句吧...

相关阅读