蓝桥杯 猜字母

猜字母

题目:

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

请填写出所有符合要求的排列中,字典序最小的那个。

例如:22AA3344 比 A2A23344 字典序小。当然,它们都不是满足要求的答案。


请通过浏览器提交答案。“A”一定不要用小写字母a,也不要用“1”代替。字符间一定不要留空格。

题解:全排列后再判断 比赛的时候不知道怎么脑子瓦特了 愣是把A 写成了1

 1 package AllWATER;
 2 
 3 public class 猜字母 {
 4     static int [] a = {0,1,1,2,2,3,3,4,4};
 5     static int [] vis = new int [10];
 6     static int [] num = new int [10];
 7     static int [] book = new int [10];
 8     static int cnt = 0;
 9     static int flag1 = 0;
10     static void check() { 
11         for(int i=0;i<book.length;i++)
12             book[i] = 0;
13         
14         for(int i=1;i<=8;i++) {
15             if(book[i]==0&&i+2<=8&&book[i+2]==0&&num[i]==1&&num[i+2]==1)
16             {
17                 book[i] = 1;book[i+2] = 1;
18             }     
19             if(book[i]==0&&i+3<=8&&book[i+3]==0&&num[i]==2&&num[i+3]==2)
20             {
21                 book[i] = 2;book[i+3] = 2;
22             }
23             if(book[i]==0&&i+4<=8&&book[i+4]==0&&num[i]==3&&num[i+4]==3)
24             {
25                 book[i] = 3;book[i+4] = 3;
26             }
27             if(book[i]==0&&i+5<=8&&book[i+5]==0&&num[i]==4&&num[i+5]==4)
28             {
29                 book[i] = 4;book[i+5] = 4;
30             }
31             
32         }
33         int flag=0;
34         for(int i=1;i<=8;i++) {
35             if(book[i]==0)
36                 flag=1;
37         }
38         if(flag == 0&&flag1 == 0) {
39             for(int i=1;i<=8;i++) {
40                 System.out.print(book[i]);
41             }
42             System.out.println();
43             flag1 = 1;
44         }
45     }
46     static void dfs(int step) {
47         if(step == 9) {
48             check();
49             return;
50         }
51         //System.out.println("haha");
52         for(int i=1;i<9;i++) {
53             if(vis[i] == 0) {
54                 vis[i] = 1;
55                 num[step] = a[i];
56                 dfs(step+1);
57                 vis[i] = 0;
58             }
59         }
60     }
61     public static void main(String[] args) {
62         dfs(1);
63     }
64 }

猜你喜欢

转载自www.cnblogs.com/1013star/p/10332140.html