简单模拟
View Code
#include#include #include #include #include using namespace std;#define max_key_len 15#define max_len 105struct Elem{ char ch; int index;}letter[max_key_len];char key[max_key_len];int key_len;char st[max_len];int map[max_key_len];bool operator < (const Elem &a, const Elem &b){ if (a.ch == b.ch) return a.index < b.index; return a.ch < b.ch;}void work(){ key_len = strlen(key); for (int i = 0; i < key_len; i++) { letter[i].ch = key[i]; letter[i].index = i; }}void output(){ for (int i = 0; i < key_len; i++) map[letter[i].index] = i; int row = strlen(st) / key_len; for (int i = 0; i < row; i++) { for (int j = 0; j < key_len; j++) putchar(st[i + map[j] * row]); } putchar('\n');}int main(){ //freopen("t.txt", "r", stdin); while (gets(key), strcmp(key, "THEEND") != 0) { gets(st); work(); sort(letter, letter + key_len); output(); } return 0;}