蓝桥杯 扑克序列

向右看齐 2022-03-07 15:18 238阅读 0赞
  1. AA223344,一共4对扑克牌。请你把它们排成一行。
  2. 要求:两个A中间有1张牌,两个2之间有2张牌,两个3之间有3张牌,两个4之间有4张牌。
  3. 4A3A2432 2342A3A4
  4. 请填写出所有符合要求的排列中,字典序最小的那个。
  5. 例如:
  6. 22AA3344 A2A23344 字典序小。当然,它们都不是满足要求的答案。
  7. 请通过浏览器提交答案。“A”一定不要用小写字母a,也不要用“1”代替。字符间一定不要留空格。

【答案】:2342A3A4

  1. import java.util.HashSet;
  2. import java.util.Set;
  3. public class Main{
  4. public static Set<String> set=new HashSet<>();
  5. public static void main(String[] args) {
  6. String s="AA223344";
  7. char[] chs=s.toCharArray();
  8. f(chs,0);
  9. System.out.println(set);
  10. }
  11. private static void f(char[] chs, int k) {
  12. // TODO 自动生成的方法存根
  13. if(k>=chs.length) {
  14. test(chs);
  15. return;
  16. }
  17. for(int i=k;i<chs.length;i++) {
  18. {char t=chs[i];
  19. chs[i]=chs[k];
  20. chs[k]=t;}
  21. f(chs,k+1);
  22. {char t=chs[i];
  23. chs[i]=chs[k];
  24. chs[k]=t;}
  25. }
  26. }
  27. private static void test(char[] chs) {
  28. // TODO 自动生成的方法存根
  29. String s=new String(chs);//toString返回的是当前对象的内存地址,要用new String得到的才是字符串
  30. if(s.lastIndexOf('A')-s.indexOf('A')!=2) {
  31. return;
  32. }
  33. if(s.lastIndexOf('2')-s.indexOf('2')!=3) {
  34. return;
  35. }
  36. if(s.lastIndexOf('3')-s.indexOf('3')!=4) {
  37. return;
  38. }
  39. if(s.lastIndexOf('4')-s.indexOf('4')!=5) {
  40. return;
  41. }
  42. set.add(s);
  43. }
  44. }

发表评论

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

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

相关阅读

    相关

    又到了一年一度蓝桥杯,真是烦,不知道要不要参加。去年我报名了,忘了留意时间错过了。今年又大三,想学的又特别多,报名吧得花很多时间准备,可不报名吧,以后简历又不好看。 参加的

    相关

    又到了一年一度蓝桥杯,真是烦,不知道要不要参加。去年我报名了,忘了留意时间错过了。今年又大三,想学的又特别多,报名吧得花很多时间准备,可不报名吧,以后简历又不好看。 参加的

    相关 扑克序列

    AA223344,一共4对扑克牌。请你把它们排成一行。 要求:两个A中间有1张牌,两个2之间有2张牌,两个3之间有3张牌,两个4之间有4张牌。

    相关 圆周率

    数学发展历史上,圆周率的计算曾有许多有趣甚至是传奇的故事。其中许多方法都涉及无穷级数。     图1.png中所示,就是一种用连分数的形式表示的圆周率