天天看点

uva10602 - Editor Nottoobad

题意:

一台声控机子,有两条命令:— “repeat the last word”, “delete the last symbol”.给你一些单词,让你用合理运用这两条命令,最少的敲击键盘打出这些单词。

思路:

很简单的一道贪心,排序+比较即可。

代码如下:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include  <algorithm>
using namespace std;
const int N = 105;
int n;
string str[N];
int main() {
    int cas;
    scanf("%d", &cas);
    while (cas--) {
        scanf("%d", &n);
        for (int i = 0; i < n; i++)
            cin >> str[i];
        sort(str, str + n);
        int cnt = str[0].size();
        for (int i = 1; i < n; i++) {
            int len = str[i].size();
            int j = 0;
            while (j < len&& (str[i][j]==str[i - 1][j]))
                j++;
            cnt += len - j;
        }
        printf("%d\n", cnt);
        for (int i = 0; i < n; i++)
            cout<< str[i]<<endl;
    }
    return 0;
}