1 /*
 2 对于题目多读几遍,然后再关键字排序的时候,把对应的数组序号也排序,
 3     EYDE
 4     MBLR
 5     THAN
 6     MEKT
 7     ETOE
 8     EOTH
 9     
10     MEETME
11     BYTHEO
12     LDOAKT
13     REENTH
14  
15  
16 */
17 #include<iostream>
18 #include<string>
19 #include<algorithm>
20 using namespace std;
21 int main(){
22  int n;
23  string keyword;
24  while(cin>>keyword&&keyword!="THEEND"){
25   string s;
26   cin>>s;
27   int len = keyword.length();
28   int slen = s.length();
29   while(slen%len!=0){
30    s =  s + "X";
31    slen = s.length();
32   }
33   slen = s.length();
34   int row = slen / len;
35   int column = len;
36   int base = 0;
37   char a[row][column];
38   char b[row][column];
39   for(int i=0;i<column;i++){
40    for(int j=0;j<row;j++){
41     a[j][i]=s[base];
42     base ++;
43    }
44   }
45   int y[len];
46   char s1[len];
47   for(int i=0;i<len;i++){
48    s1[i] = keyword[i];
49   }
50   for(int t=0;t<len;t++){
51    y[t] = t;
52   }
53   for(int i=0;i<len;i++){
54    for(int j=0;j<len-i-1;j++){
55     if(s1[j] > s1[j+1]){
56      swap(s1[j],s1[j+1]);
57      swap(y[j],y[j+1]);
58     }
59    }
60   }
61   
62   for(int w=0;w<column;w++){
63    for(int r=0;r<row;r++){
64     b[r][y[w]] = a[r][w];
65    }
66   }
67   
68         for(int w=0;w<row;w++){
69    for(int r=0;r<column;r++){
70     cout<<b[w][r];
71    }
72   }
73   
74   
75   
76   cout<<endl;
77    
78  }
79  return 0;
80 }

 

posted on 2016-11-02 23:36  任我主宰  阅读(172)  评论(0编辑  收藏  举报