博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 3460
阅读量:5827 次
发布时间:2019-06-18

本文共 1377 字,大约阅读时间需要 4 分钟。

算法:字典树

题意:给你一些单词,有一台打印机只能进行以下三种操作

1.读入

2.删除

3.打印

让你输出最少的操作次数将这些单词全部打印出来;

(字典树节点-1)*2  表示读入和删除操作;

  打印操作  单词数

 最后一个最长的单词不需要进行删除操作;

所以答案=(字典树节点-1)*2+单词数-最长的字符串;

Input

There are several test cases in the input.
Each test case begin with one integer N (1 ≤ N ≤ 10000), indicating the number of team names.
Then N strings follow, each string only contains lowercases, not empty, and its length is no more than 50.
The input terminates by end of file marker.
Output
For each test case, output one integer, indicating minimum number of operations.
Sample Input
2
freeradiant
freeopen
Sample Output
21

代码:

#include
#include
#include
#include
#include
#include
#include
using namespace std;#define Max 30struct dot{ dot *next[Max];};dot *newnode(){ dot *temp=new dot; for(int i=0;i
next[i]=NULL; return temp;}void tree(char *st,dot *root,int &k){ dot *p=root; int id=0; for(int i=0;i
next[id]==NULL) { k++; //记录节点数; p->next[id]=newnode(); } p=p->next[id]; }}void del(dot *t){ if(t==NULL) return ; for(int i=0;i
next[i]==NULL) del(t->next[i]); delete t;}int main(){ char st[55]; int n,m,i,j,k; while(cin>>n) { dot *root; root=newnode(); k=0;//没有记录跟节点 m=0; j=n; while(n--) { cin>>st; i=strlen(st); m=max(m,i); tree(st,root,k); } cout<
<

转载于:https://www.cnblogs.com/wangyumin/p/5323468.html

你可能感兴趣的文章
【OpenCV学习】滚动条
查看>>
ofo用科技引领行业进入4.0时代 用户粘性连续8个月远甩摩拜
查看>>
兰州青年志愿者“中西合璧”玩快闪 温暖旅客回家路
查看>>
计划10年建10万廉价屋 新西兰政府:比想象中难
查看>>
甘肃发首版《3D打印职业教育教材》:校企合作育专才
查看>>
李娜入选国际网球名人堂 成亚洲第一人
查看>>
为找好心人抚养孩子 浙江一离婚父亲将幼童丢弃公园
查看>>
晚婚晚育 近20年巴西35岁以上孕妇增加65%
查看>>
读书:为了那个美妙的咔哒声
查看>>
我从过去八个月的AI公司面试中学到了什么?
查看>>
深入探究Immutable.js的实现机制(一)
查看>>
jsp改造之sitemesh注意事项
查看>>
智能硬件的时代,嵌入式是否已经日薄西山
查看>>
SpringBoot-Shiro使用
查看>>
iOS 9.0之后NSString encode方法替换
查看>>
解决 ThinkPHP5 无法接收 客户端 Post 传递的 Json 参数
查看>>
ASMFD (ASM Filter Driver) Support on OS Platforms (Certification Matrix). (文档 ID 2034681.1)
查看>>
CRM Transaction处理中的权限控制
查看>>
[转]linux创建链接文件的两种方法
查看>>
python ipaddress模块使用
查看>>