SDNUOJ1099前缀判断(set)
来源:互联网 发布:淘宝网投诉电话转人工 编辑:程序博客网 时间:2024/06/01 09:42
SDNU_ICPC1099
题意:给定 n 个字符串,求有多少字符串是其他字符串的前缀。1 <= n <= 1000,每行一个字符串,字符串只由26个小写字母组成,最大长度为100。
注意两个相同的字符串互为前缀
(一)用set做的版本
思路:
定义一个字符串类型的数组(不知道这样用好不好Ծ‸Ծ)然后把每一串字符串的前缀们写出来放到一个容器里若输入的字符串里有这个容器中的元素那么他就是前缀
代码
#include<cstdio>#include<set>#include<cstring>#include<iostream>using namespace std;int main(){ int n,sum=0; string x; string s[1200]; cin>>n; set<string> se;//定义一个容器用来装前缀 set<string> all;//装所有输入的字符串 set<string> cop;//这个是之前出现过的装一下 for(int i=0;i<n;i++)//跑个循环输入所有字符串并且都装到all容器里 { cin>>s[i]; if(all.count(s[i])!=0)//输入字符串已经出现过 cop.insert(s[i]);//就把它存到cop里 all.insert(s[i]);//把输入的字符串存到容器里 for(int j=1;j<s[i].length();j++)//跑个循环存一下每个字符串的所有前缀 { x=s[i].substr(0,j);//截取 se.insert(x);然后把截取部分搁到容器里 } } for(int i=0;i<n;i++) { if(se.count(s[i])!=0)sum+=1;//如果字符串在前缀容器里那么他就是其他字符串的前缀,就加一 else if(cop.count(s[i]))sum+=1;//如果不是并且是重复出现的那么他也是前缀,也加一 } cout<<sum<<endl; return 0;}这个真的要考虑全面...刚开始忘了去重,然后又搞多了,在前面判断重了就直接给sum加一了,忘了后面还有可能重复加上他emmmmm所以要把重了的先屯起来到下面跟前缀们一起判断(二)未完待续,还有一个代码没搞出来......
阅读全文
1 0
- SDNUOJ1099前缀判断(set)
- 前缀判断
- 前缀判断
- 前缀判断
- 前缀判断
- 前缀判断
- 前缀判断
- 前缀判断
- 前缀判断
- Phone List(前缀判断--二分查找)
- poj 1056 判断前缀
- 前缀判断 - 蓝桥杯
- 前缀判断--蓝桥杯
- 1005-前缀判断
- 2013 前缀判断
- 蓝桥 前缀判断
- 蓝桥杯--前缀判断
- sdnu1099.前缀判断
- Android --- 常用的系统服务(一)
- NO.3 Mybatis.xml结构介绍
- Http状态码总结大全(200,404,500 etc)
- Win10 64位下用minGW编译64位FFMpeg
- spring-激活profile(java)
- SDNUOJ1099前缀判断(set)
- Unity Shader 学习笔记(4)Unity Shader内置变量、函数,Shader Model
- 习题6 6.3
- Java面试题全集(上)
- CSS 万能的 sticky-footer 写法
- LibreOJ103-子串查找
- 杭电ACM OJ 1005 Number Sequence 简单却重要的公式题 完美考察了递归思想
- Python2.7,PyQt4,实现键盘监听事件
- Java的三种代理模式