題意:給定一些單詞,然後讓列印這些單詞,複制前一個單詞和删除目前的最後一個字母沒有花費,問最小的列印花費。
思路:貪心。排序後,檢查目前和上一個單詞有多少一樣的,這部分的花費可以為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;
}
}