题目大意:输入一系列的字符串,判断这些字符串中是否存在其中的一个字符串是另外一个字符串的前缀。。

如果是,输出Set 。。 is not immediately decodable

否则输出Set .. is immediately decodable

说的通俗点,就是判断一个字符串是否是两外一个字符串的前缀

解题思路:

这是一道字典树的题。一开始的时候,我用c/c++来写,然后是100行写完了,就是不知道哪里错了

这时,我实在忍不住了。直接就用java来写了

代码如下:(注意以下代码在submit的时候是需要对格式改一下的。。。但我这里可懒得改了)

package com.njupt.acm;

import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Scanner;
import java.util.Set; public class HDU_1305 { public static void main(String[] args) {
Scanner scanner = new Scanner(System.in); int counter = 1;
while (scanner.hasNext()) {
Set set = new HashSet();
String str = scanner.next();
boolean flag = true; set.add(str);
while (scanner.hasNext()) {
str = scanner.next();
if (str.equals("9")) {
if(flag){
System.out.println("Set "+(counter++)+" is immediately decodable");
}else{
System.out.println("Set "+(counter++)+" is not immediately decodable");
}
break;
}
Iterator<String> iter = set.iterator();
while (iter.hasNext()) {
String str1 = iter.next();
if (str.startsWith(str1) || str1.startsWith(str)) {
flag = false;
break;
}
}
if(flag){
set.add(str);
}
}
}
}
}

以下附上让人心碎的c/c++代码

/*
* 1305_1.cpp
*
* Created on: 2013年8月24日
* Author: Administrator
*/ #include <iostream> using namespace std; const int maxn = 2;
struct node {
int count;
node* next[maxn];
}; node* root;
node* newset() {
node* current;
current = (node*) malloc(sizeof(node)); int i;
for (i = 0; i < maxn; ++i) {
current->next[i] = NULL;
} current->count = 1;
return current;
} void insert(char* s) {
node* current;
int len = strlen(s);
if (len == 0) {
return;
}
current = root; int i;
for (i = 0; i < len; ++i) {
if (current->next[s[i] - '0'] != NULL) {
current = current->next[s[i] - '0'];
current->count = current->count + 1;
} else {
current->next[s[i] - '0'] = newset();
current = current->next[s[i] - '0'];
}
}
} int find(char* s) {
node* current;
int len = strlen(s);
if (len == 0) {
return 0;
}
current = root; int i;
for (i = 0; i < len; ++i) {
if (current->next[s[i] - '0'] != NULL) {
current = current->next[s[i] - '0'];
} else {
return 0;
}
} return current->count;
} int main() {
char str[15][15];
int line = 0, count = 1; while (scanf("%s", str[line]) != EOF) {
root = newset();
line = 0;
bool flag = true;
insert(str[line++]);
while (scanf("%s", str[line]) != EOF) {
if (str[line][0] == '9') {
break;
}else{
insert(str[line++]);
} } int i;
for (i = 0; i < line; ++i) {
if (find(str[i]) > 1) {
flag = false;
break;
}
} if (flag) {
printf("Set %d is immediately decodable\n", count++);
} else {
printf("Set %d is not immediately decodable\n", count++);
} } delete root;
}

(step5.1.2)hdu 1305(Immediate Decodability——字典树)的更多相关文章

  1. hdu 1305 Immediate Decodability(字典树)

    Immediate Decodability Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/O ...

  2. hdu 1671 Phone List 字典树

    // hdu 1671 Phone List 字典树 // // 题目大意: // // 有一些电话号码的字符串长度最多是10,问是否存在字符串是其它字符串的前缀 // // // 解题思路: // ...

  3. hdu 1305 Immediate Decodability

    原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1305 字典树裸题,如下: #include<algorithm> #include< ...

  4. hdu 1251 统计难题 (字典树入门题)

    /******************************************************* 题目: 统计难题 (hdu 1251) 链接: http://acm.hdu.edu. ...

  5. HDU 5536 Chip Factory 字典树

    Chip Factory Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid= ...

  6. HDU 1298 T9(字典树+dfs)

    http://acm.hdu.edu.cn/showproblem.php?pid=1298 题意:模拟手机9键,给出每个单词的使用频率.现在给出按键的顺序,问每次按键后首字是什么(也就是要概率最大的 ...

  7. HDU 2846 Repository(字典树,每个子串建树,*s的使用)

    Repository Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total ...

  8. HDU 1298 T9【字典树增加||查询】

    任意门:http://acm.hdu.edu.cn/showproblem.php?pid=1298 T9 Time Limit: 2000/1000 MS (Java/Others)    Memo ...

  9. HDU 5536 Chip Factory 字典树+贪心

    给你n个数,a1....an,求(ai+aj)^ak最大的值,i不等于j不等于k 思路:先建字典树,暴力i,j每次删除他们,然后贪心找k,再恢复i,j,每次和答案取较大的,就是答案,有关异或的貌似很多 ...

随机推荐

  1. DNS:因特网的目录服务

    作者:华科小涛,http://www.cnblogs.com/hust-ghtao/ 有两种方式来识别主机:通过主机名或IP地址.人们当然喜欢便于记忆的主机名,而路由器则喜欢定长的.有层次结构的IP地 ...

  2. win7 虚拟机 ios开发环境搭建

    http://www.cnblogs.com/xiaoyaoju/archive/2013/05/21/3091171.html

  3. Android 调整屏幕分辩率

    Android 可设置为随着窗口大小调整缩放比例及设定fixed的窗口大小. 对于surface的控制在SurfaceHolder类中进行 而Android 屏幕分辩率中已经有一个类DisplayMe ...

  4. Java--Eclipse关联Java源码

    打开Eclipse,Window->Preferences->Java 点Edit按钮后弹出: 点Source Attachment后弹出: 选择Java安装路径下的src.zip文件即可 ...

  5. 谈论Java原子变量和同步的效率 -- 颠覆你的生活

    我们认为,由于思维定式原子变量总是比同步运行的速度更快,我想是这样也已经,直到实现了ID在第一次测试过程生成器不具有在这样一个迷迷糊糊的东西. 测试代码: import java.util.Array ...

  6. 重操JS旧业第十弹:闭包

    闭包是js最难理解,也是最蛋疼的一个名词,仿佛只可意会不可言传一样,有人说闭包说白了就是函数嵌套,也有人说闭包就是函数能够访问函数外部的变量,而内部的外部访问不了: 貌似都非常有道理,其实仔细想来只不 ...

  7. Qt调用摄像头(截取并保存图片)

    原地址:http://blog.csdn.net/liang19890820/article/details/12782531 Qt如何调用系统摄像设备进行显示.截图.录制?     QCamera: ...

  8. [置顶] gis海量资源网盘提供VIP账号无广告高速下载 (更新更多资源)

    资源网盘下载地址:http://laoheitan.bego.cc/ 城通网盘 vip帐号共享 省去 烦人的 广告  多任务同时下载 独乐乐 不如众乐乐 好人 勿改密码. 获取到 vip下载连接后 请 ...

  9. CodeForces 370C. Mittens

    C. Mittens time limit per test 1 second memory limit per test 256 megabytes input standard input out ...

  10. 【ASP.NET Web API教程】2.3.7 创建首页

    原文:[ASP.NET Web API教程]2.3.7 创建首页 注:本文是[ASP.NET Web API系列教程]的一部分,如果您是第一次看本博客文章,请先看前面的内容. Part 7: Crea ...