题目连接:10602 Editor Nottoobad

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

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

#include <string.h>
#include <string>
#include <iostream>
#include <algorithm>
using namespace std;
bool cmp(const string &a, const string &b) { return a < b;}
const int N = 105;
string tmp[N]; int main() {
int cas, n, cnt, end;
cin >> cas;
while (cas--) {
cin >> n; for (int i = 0; i < n; i++)
cin >> tmp[i]; sort(tmp, tmp + n);
cnt = tmp[0].size(); for(int i = 1 ; i < n ; i++){
if(tmp[i][0] != tmp[i - 1][0]){
cnt += tmp[i].size();
continue;
}
int j;
for(j = 0; j < tmp[i - 1].size(); j++){
if(tmp[i - 1][j] != tmp[i][j]) {
break;
}
}
cnt += tmp[i].size() - j;
}
cout << cnt << endl;
for (int i = 0; i < n; i++)
cout << tmp[i] << endl;
}
return 0;
}

最新文章

  1. (原)3.2 Zookeeper应用 - 数据的发布与订阅
  2. Lua 栈的理解
  3. Express 4 中如何使用connect-mongo
  4. Unknown column &#39;&#39; in &#39;field list&#39;解决方案
  5. Spring框架学习之第8节
  6. rman全备份异机恢复
  7. CSS3 概览 更新时间 2014-0412-1317
  8. react.js 你应知道的9件事
  9. latex列表
  10. zf-关于荆州首页鼠标移动到导航栏上去触发的js 显示 问题解决办法
  11. TP中的图片水印
  12. 使用newtonjson解决Json日期格式问题
  13. Python基础01_介绍_HelloWorld
  14. python文件逐行读取四种方法
  15. git 28原则
  16. Httprunner学习
  17. 《JavaScript 高级程序设计》第一章:简介
  18. Web 前沿&mdash;&mdash;HTML5 Form Data 对象的使用
  19. 求树的直径和中心(ZOJ3820)
  20. ssm 动态切换数据源

热门文章

  1. HDU 3033 分组背包
  2. 管理tips
  3. SQL__用命令删除定期的备份数据库文件
  4. hibernate 配置文件 和一个 id生成类BaseEntity.java 和一个hibernate工具类 HibernatUtils.java
  5. solr 从零学习开始
  6. 疯狂JAVA讲义第三章之数组篇
  7. [HTML5实现人工智能]小游戏《井字棋》发布,据说IQ上200才能赢
  8. WPF中控件ListView和DataGrid典型属性介绍
  9. Java__jar包的简单操作
  10. android 由于界面控件过多耗时处理办法