UVA - 10602 Editor Nottoobad

来源:互联网 发布:淘宝同学app 编辑:程序博客网 时间:2024/06/04 17:40

题目大意:要输入 n 个单词,现在有三种操作, 1、输入一个字符,需要按下一次按键。  2、通过声控删除一个字符。3、通过声控复制一遍上面的单词。现在要求按最少的按键来完成输入,并且输出输入的顺序。


解题思路:因为有复制这一功能,所以每次输入一个单词之后要找另一个与它相似度最近的一个。比较两个单词对应的不同字符个数,对于两个不同长度的单词,后面的单词长的话要计算多出的部分,因为是再输入的,要是短的话就不需要计算,因为是通过声控删除的。

#include <iostream>#include <algorithm>#include <string>using namespace std;int main() {int T;cin >> T;string s[105];while (T--) {int n;cin >> n;for (int i = 0; i < n; i++)cin >> s[i];sort(s, s + n);int sum = s[0].size();for (int i = 1, cnt; i < n; i++) {for (cnt = 0; s[i][cnt] && s[i-1][cnt] && s[i][cnt] == s[i-1][cnt]; cnt++);sum += s[i].length() - cnt;}cout << sum << endl;for (int i = 0; i < n; i++)cout << s[i] << endl;}return 0;}


0 0
原创粉丝点击