题意:给定一些单词,然后让打印这些单词,复制前一个单词和删除当前的最后一个字母没有花费,问最小的打印花费。
思路:贪心。排序后,检查当前和上一个单词有多少一样的,这部分的花费可以为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;}
}