nyoj 1112 求次数 map,数组.
2016-07-26 09:53
344 查看
求次数,题目链接,click here .
描述
求ans;
输入
输出
求 ans
样例输入
样例输出
上传者
ACM_王亚龙
做法:
map先交一发:
字符串数组再交一发:
时间限制:1000 ms | 内存限制:65535 KB 难度:2
描述
题意很简单,给一个数n 以及一个字符串str,区间【i,i+n-1】 为一个新的字符串, i 属于【0,strlen(str)】如果新的字符串出现过ans++,例如: acmacm n=3, 那么 子串为acm cma mac acm ,只有acm出现过.
求ans;
输入
LINE 1: T组数据(T<10) LINE 2: n ,n <= 10,且小于strlen(str); LINE 3:str str 仅包含英文小写字母 ,切长度小于10w
输出
求 ans
样例输入
2 2 aaaaaaa 3 acmacm
样例输出
5 1
上传者
ACM_王亚龙
题意就是给你个字符串,让你在其中找长度为n的字符串,求出长度为n的字符串再次出现的次数的和.
做法:
之前的想法是每一个长度为n的数组肯定都要存起来,然后排序, strcmp寻找出现次数大于二的字符串出现的次数, 但是有人用map过了,就在考虑map,直接找到次数相同的最大的,map很强大,过时间有点多,然后再用字符串数组交一发,时间相差好几倍...
map先交一发:
#include<bits/stdc++.h>//万能头文件;学长给的; using namespace std; char s[100005]; int main() { int t,n; string ss; scanf("%d",&t); while(t--) { scanf("%d%s",&n,s); map<string,int>mp; ss.clear(); int ans=0; int len=strlen(s); for(int j=0; j<n; j++) ss+=s[j]; mp[ss]++; for(int i=0; i<len-n; i++) { ss.erase(0,1);//去首位; ss+=s[i+n];//加末位; mp[ss]++;//出现次数加1 ; } map<string,int >::iterator it;//定义迭代器; for(it=mp.begin();it!=mp.end();it++) { int count=it->second;//找到首位元素,second 是map内部对应的key值,也就是int值; if(count>=2)//如果出现次数大于2; ans=ans+count-1; } printf("%d\n",ans); } return 0; }
字符串数组再交一发:
#include<bits/stdc++.h> using namespace std; const int maxn =100005; struct node { char s[13]; }ss[maxn]; bool cmp(node a,node b) { return (strcmp(a.s,b.s)<0);//前边小于后边,返回负数; } char str[maxn]; int main() { int t,n; scanf("%d",&t); while(t--) { memset(ss,0,sizeof(ss)); scanf("%d",&n); getchar(); gets(str); int l=strlen(str),ans=0; for(int i=0;i<l-n+1;i++) { int j=0; for(;j<n;j++) ss[i].s[j]=str[j+i]; } sort(ss,ss+l-n+1,cmp); int B=0;//记录次数; for(int i=0;i<=l-n ;i++) if(strcmp(ss[i].s,ss[i+1].s)==0) B++; printf("%d\n",B); } return 0; }
相关文章推荐
- -bash: /usr/bin/yum: /usr/bin/python: bad interpreter: No such file or directory
- MFC界面库BCGControlBar v25.0新功能详解五之对话框和表单等
- 深度学习(一)深度学习学习资料
- 203.Remove Linked List Elements
- Java环境变量配置与相关知识
- SmartTabLayout小写字母改为大写
- E: Package 'package ' has no installation candidate的原因分析 /etc/apt/sources.list
- 客户端早会(每日一享:责任键设计模式在米学APP中的应用?)
- Java ThreadLocal
- 《LoadRunner 没有告诉你的》之二——描述性统计与性能结果分析(续)
- JAVA代码中加了Try...Catch的执行顺序
- Target runtime Apache Tomcat 6.0 is not defined
- 花生壳记录
- Java程序员应该知道的10个调试技巧
- asp.net TreeView递归循环子节点生成树形菜单实例
- 笔记2 布局
- Android_自定义标签ViewLayout
- C#读写Json
- C++ Vector 用法
- Unity3D之Vector3.Dot和Vector3.Cross的使用