(step5.1.2)hdu 1305(Immediate Decodability——字典树)
题目大意:输入一系列的字符串,判断这些字符串中是否存在其中的一个字符串是另外一个字符串的前缀。。
如果是,输出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——字典树)的更多相关文章
- hdu 1305 Immediate Decodability(字典树)
Immediate Decodability Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/O ...
- hdu 1671 Phone List 字典树
// hdu 1671 Phone List 字典树 // // 题目大意: // // 有一些电话号码的字符串长度最多是10,问是否存在字符串是其它字符串的前缀 // // // 解题思路: // ...
- hdu 1305 Immediate Decodability
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1305 字典树裸题,如下: #include<algorithm> #include< ...
- hdu 1251 统计难题 (字典树入门题)
/******************************************************* 题目: 统计难题 (hdu 1251) 链接: http://acm.hdu.edu. ...
- HDU 5536 Chip Factory 字典树
Chip Factory Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid= ...
- HDU 1298 T9(字典树+dfs)
http://acm.hdu.edu.cn/showproblem.php?pid=1298 题意:模拟手机9键,给出每个单词的使用频率.现在给出按键的顺序,问每次按键后首字是什么(也就是要概率最大的 ...
- HDU 2846 Repository(字典树,每个子串建树,*s的使用)
Repository Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total ...
- HDU 1298 T9【字典树增加||查询】
任意门:http://acm.hdu.edu.cn/showproblem.php?pid=1298 T9 Time Limit: 2000/1000 MS (Java/Others) Memo ...
- HDU 5536 Chip Factory 字典树+贪心
给你n个数,a1....an,求(ai+aj)^ak最大的值,i不等于j不等于k 思路:先建字典树,暴力i,j每次删除他们,然后贪心找k,再恢复i,j,每次和答案取较大的,就是答案,有关异或的貌似很多 ...
随机推荐
- 微信jssdk已无力吐槽
微信强大的整合能力让企业公众号的开发迅速窜红.尤其是企业须要个性化定制的一些功能.公司在同一时候上线的app和触屏版的应用中,微信分享自然是不可或缺的重要一环. 纵观如今大多数的微信公众号.分享大都是 ...
- 求助(VC++) 隐藏Console窗体无效
[逝去的100~~ 2014/10/07 20: 20] 程序想要实现控制台窗体的隐藏,可是窗体每次执行总会弹出来.为什么呢? 代码例如以下: // Mini.cpp : 定义控制台应用程序的入口点. ...
- Swift - 使用位运算提取颜色,合并颜色
通常我们可以使用16进制的格式表示RGB颜色,比如0x2f88c0.通过位操作运算,能很方便的将其中的R,G,B颜色各部分分别提取出来.反之,也可以将R,G,B颜色值组合成一个完整的颜色. 1,提取颜 ...
- 来推荐个免费的PPT演示工具--ZohoShowTime
事实上这个不算新产品了,这次是做了一些大的改进.上次在Zoho的全球用户大会上,全程演讲都是用的这个工具.Zoho这点非常好啊.自己的产品自己带头用.个人认为它最大的用处就是.离得远的观众能够在自己的 ...
- CF 8D Two Friends (三分+二分)
转载请注明出处,谢谢http://blog.csdn.net/ACM_cxlove?viewmode=contents by---cxlove 题意 :有三个点,p0,p1,p2.有两个人ali ...
- Python源码学习十一 一个常用的内存分配函数
void * _PyObject_DebugMallocApi(char id, size_t nbytes) { uchar *p; /* base address of malloc'ed blo ...
- 11586 - Train Tracks
Problem J: Train Tracks Andy loves his set of wooden trains and railroad tracks. Each day, Daddy has ...
- SRM 583 Div Level Two:IDNumberVerification
题目来源:http://community.topcoder.com/stat?c=problem_statement&pm=12610 这道题比较有意思,估计是中国人出的吧,以前都不知道身份 ...
- Object-c @property的用法
property是一种代码生成机制,可以生成不同类型的getter/setter函数,特别是假设你想要用点(.)操作符号来存取变量的话,你就能必须使用property. 怎样使用? 使用方法如:@pr ...
- Android 带你从源码的角度解析Scroller的滚动实现原理
转帖请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/17483273),请尊重他人的辛勤劳动成果,谢谢! 今天给大 ...