HDU 1305 Immediate Decodability 可直接解码吗?
题意:一个码如果是另一个码的前缀,则 is not immediately decodable,不可直接解码,也就是给一串二进制数字给你,你不能对其解码,因解码出来可能有多种情况。
思路:将每个码按长度从短到长排序,逐个与其后面的码比较,若前面相同位数完全一样了,那就可以输出了。
- #include <iostream>
- #include <stdio.h>
- #include <string>
- #include <map>
- #include <cstring>
- #include <algorithm>
- using namespace std;
- vector< vector<int> > a;
- bool cmp(vector<int> a, vector<int> b){return a.size()<b.size()? true: false;}
- bool isid()
- {
- bool issub=false;
- int t, j, k;
- sort(a.begin(), a.end(), cmp); //按照元素的多少从少到多排序
- /*test
- for(t=0; t<a.size(); t++)
- {
- for(j=0; j<a[t].size(); j++)
- {
- cout<<a[t][j];
- }
- cout<<endl;
- }*/
- for( t=; t<a.size(); t++ ) //从小到大,一个个跟后面的比较前a[t].size()个是不是重叠,
- {
- for(j=t+; j<a.size(); j++)
- {
- issub=true;
- for(k=; k<a[t].size(); k++)
- {
- if( a[t][k]!=a[j][k] )
- {
- issub = false; //只要有一个不同,就不是真子串
- break;
- }
- }
- if( issub==true ) //有一个串是另一个串的前缀
- return false;
- }
- }
- return true;
- }
- int main()
- {
- //freopen("e:input.txt","r",stdin);
- vector<int> tmp;
- char c;
- int i=, t, j, k, cnt=;
- while( (c=getchar())!=EOF )
- {
- if( c=='' ) //一个例子结束
- {
- if( isid()==true ) //处理 a
- cout<<"Set "<< ++cnt<<" is immediately decodable"<<endl;
- else
- cout<<"Set "<< ++cnt<<" is not immediately decodable"<<endl;
- a.clear(); //例子结束,清理工作
- }
- else if( c=='\n' ) //只是换行
- {
- if(tmp.empty()==) //提交并清空
- {
- a.push_back(tmp);
- tmp.clear();
- }
- }
- else //c是0和1的
- tmp.push_back(c-'') ;
- }
- return ;
- }
Immediate Decodability
HDU 1305 Immediate Decodability 可直接解码吗?的更多相关文章
- hdu 1305 Immediate Decodability
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1305 字典树裸题,如下: #include<algorithm> #include< ...
- hdu 1305 Immediate Decodability(字典树)
Immediate Decodability Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/O ...
- (step5.1.2)hdu 1305(Immediate Decodability——字典树)
题目大意:输入一系列的字符串,判断这些字符串中是否存在其中的一个字符串是另外一个字符串的前缀.. 如果是,输出Set .. is not immediately decodable 否则输出Set . ...
- Immediate Decodability HDU - 1305(模板trie)
求这些01串是否有一个是另一个的前缀.. 就是求次数就好了嘛...emm... 网上竟然都用指针写.... #include<cstdio> #include<iostream> ...
- hdu 1305 还是字典树
#include<cstdio> #include<iostream> #include<string> #include<cstdlib> #defi ...
- HDU 3829 Cat VS Dog / NBUT 1305 Cat VS Dog(二分图最大匹配)
HDU 3829 Cat VS Dog / NBUT 1305 Cat VS Dog(二分图最大匹配) Description The zoo have N cats and M dogs, toda ...
- 转载:hdu 题目分类 (侵删)
转载:from http://blog.csdn.net/qq_28236309/article/details/47818349 基础题:1000.1001.1004.1005.1008.1012. ...
- HDU——PKU题目分类
HDU 模拟题, 枚举1002 1004 1013 1015 1017 1020 1022 1029 1031 1033 1034 1035 1036 1037 1039 1042 1047 1048 ...
- HDU 5513 Efficient Tree
HDU 5513 Efficient Tree 题意 给一个\(N \times M(N \le 800, M \le 7)\)矩形. 已知每个点\((i-1, j)\)和\((i,j-1)\)连边的 ...
随机推荐
- Java中Class Type 类类型是怎么回事?
Java中三种方式可以用来表示Class Type(类的实例对象), 第一种,通过隐藏的静态成员变量class来表示:第二种,通过调用该类的对象的getClass方法:第三种,通过Class.forN ...
- 反射实现增删改查(DAO层)——查询数据
先贴出代码,后续补充自己的思路.配置文件.使用方式: /** * * 数据查询 * */ @Override public List<?> queryObject(List<Map& ...
- bzoj1227: [SDOI2009]虔诚的墓主人(树状数组,组合数)
传送门 首先,对于每一块墓地,如果上下左右各有$a,b,c,d$棵树,那么总的虔诚度就是$C_k^a*C_k^b*C_k^c*C_k^d$ 那么我们先把所有的点都给离散,然后按$x$为第一关键字,$y ...
- JDK动态代理和cglib代理
写一个简单的测试用例,Pig实现了Shout接口 public class MyInvocation implements InvocationHandler { Object k; public M ...
- [Inside HotSpot] Epsilon GC
1. Epsilon GC简介 Epsilon GC源于RedHat开发者Aleksey Shipilëv提交的一份JEP 318: Epsilon: A No-Op Garbage Collecto ...
- css3旋转立方体-_-
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- html_entity_decode与htmlentities函数
htmlentities() 函数把字符转换为 HTML 实体.html_entity_decode() 函数把 HTML 实体转换为字符.例子:$a = '<div> <p> ...
- [题解](优先队列广搜)POJ_3635_Full Tank
用二元组$(city,fuel)$即可记录所有状态,以当前花费为关键字优先队列,开数组记录直接做即可 有一个点在于每次不用枚举所有的加油数量,只需要加一即可,因为如果在加一升更优的话又会扩展出加更多油 ...
- Windows安装IIS后,启动网站报错:不能在此路径中使用此配置节……
在IIS里启动设置好的网站(ASP.net网站),浏览器报如下错误: 不能在此路径中使用此配置节.如果在父级别上锁定了该节,便会出现这种情况.锁定是默认设置的(overrideModeDefault= ...
- jcmd jmap应用:一个String经典笔试题的验证
笔试题: String strA = new String("123123");这一行中创建了几个String对象?? public class StringHeapCountTe ...