题意:
输入一系列的单词,求出输入字母最少的次数。
例如样例数据1
首先输入this要用4次输入。重复this的到this删除s,的到thi输入n的到thin,此时共输入5次,重复thin,在输入g的到thins thin thing。
空输入6次。
对于这个题目,首先priority_queue排序后依次进行比对就好29ms ac
//
// uva10602.cpp
// greedy
//
// Created by ni ni on 15/4/26.
// Copyright (c) 2015年 ni ni. All rights reserved.
//
#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <queue>
#include <cctype>
#include <string>
using namespace std;
int n;
priority_queue<string> que;
queue<string> out;
int sum;
void readdata()
{
string a;
cin>>n;
for (int i=0; i<n; i++) {
cin>>a;
que.push(a);
}
a=que.top();
out.push(a);
sum=a.size();
}
void solve()
{
while (!que.empty()) {
string fir,sec;
fir=que.top();
que.pop();
sec=out.back();
int firnum=fir.size();
int secnum=sec.size();
int i=0;
while (fir[i]==sec[i]&&i<secnum) {
i++;
}
sum=sum+firnum-i;
out.push(fir);
}
cout<<sum<<endl;
out.pop();
while (!out.empty()) {
string a;
a=out.front();
transform(a.begin(), a.end(), a.begin(), ::tolower );
cout<<a<<endl;
out.pop();
}
}
int main()
{
int cas;
cin>>cas;
while (cas--) {
readdata();
solve();
}
return 0;
}