poj1617

简单模拟

View Code
#include <iostream>

#include <cstdio>

#include <cstdlib>

#include <cstring>

#include <algorithm>

using namespace std;



#define max_key_len 15

#define max_len 105



struct 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;

}

 

你可能感兴趣的:(poj)