天天看點

uva 10602——Editor Nottoobad

題意:給定一些單詞,然後讓列印這些單詞,複制前一個單詞和删除目前的最後一個字母沒有花費,問最小的列印花費。

思路:貪心。排序後,檢查目前和上一個單詞有多少一樣的,這部分的花費可以為0.也就是總的減去這部分的。

code:

#include <bits/stdc++.h>
using namespace std;

string s[105];
int main()
{
    int T,n;
    scanf("%d",&T);
    while (T--){
        scanf("%d",&n);
        for (int i=0;i<n;i++){
            cin>>s[i];
        }
        sort(s,s+n);
        int ans=s[0].size();
        for (int i=1;i<n;i++){
            int t=0;
            for (int j=0;j<s[i-1].size();j++)
                if(s[i][j]==s[i-1][j]) t++;
                else break;
            ans+=s[i].size()-t;
        }
        printf("%d\n",ans);
        for (int i=0;i<n;i++)
            cout<<s[i]<<endl;
    }
}