hihoCoder_W84 Lucky Substrings(基础做法)
来源:互联网 发布:游族网络有哪些游戏 编辑:程序博客网 时间:2024/06/08 04:39
【题目】
点击这里
【思路】
分两步走,1. 找出所有斐波那契子串;2. 按字典序无重复地输出。
第一步可以枚举子串,由于规模比较小,O(n^2)的算法都可以接受。O(n^3)优化至O(n^2)的方法是,从前往后枚举子串,[i…j+1]可以利用[i…j]的结果。
第二步可以选择排序,然后无重复输出,也可以考虑建立字典树去重并排序,然后先序遍历输出。字典树的方法将在下周贴上来。
【代码】
#include <stdio.h>#include <string.h>char a[6000][101];int ans=-1;void push(char s[], int p, int q){ int i; ans++; for (i=p;i<=q;i++) a[ans][i-p]=s[i]; a[ans][q-p+1]='\0';}int comp(const void *a, const void *b){return strcmp((char *)a,(char *)b);}int main(){ char s[110]; scanf("%s",s); int verif[26]={0}; verif[1]=1; verif[2]=1; verif[3]=1; verif[5]=1; verif[8]=1; verif[13]=1; verif[21]=1; int i,j,sLen=strlen(s); for (i=0;i<sLen;i++) { int total=0; int check[26]={0}; for (j=i;j<sLen;j++) { if (check[s[j]-'a']==0){total++; check[s[j]-'a']=1;} if (verif[total]==1) push(s,i,j); } } qsort(a,ans+1,sizeof(a[0]),comp); printf("%s\n",a[0]); for (i=1;i<=ans;i++) if (strcmp(a[i],a[i-1])!=0) printf("%s\n",a[i]); return 0;}
0 0
- hihoCoder_W84 Lucky Substrings(基础做法)
- Lucky Substrings
- hihocoder Lucky Substrings
- hihoCoder - 1152 - Lucky Substrings
- hihocoder #1152 : Lucky Substrings
- Lucky Substrings HihoCoder
- Lucky Substrings微软在线测试
- hihoCoder week 84 P1 : Lucky Substrings 【dp】
- URAL 1036 Lucky Tickets(基础dp)
- Lucky Substrings 微软2016校园招聘在线笔试第二场
- Lucky Numbers(acm)
- P--运(lucky)
- lucky
- 微软2016校园招聘在线笔试第二场 题目1 : Lucky Substrings
- hdu1238(Substrings)
- HDU4455 Substrings(DP)
- substrings(子串)
- Substrings(截取字符串)
- java回调函数的一个生动解释
- android 读取本地超大图片
- Android学习笔记之ListView聊天界面
- HDU 5620 KK's Steel
- hdoj5620KK's Steel
- hihoCoder_W84 Lucky Substrings(基础做法)
- 【Android开发小记--10】一键锁屏功能实现
- 递归 (枚举)2
- 天佑中华,多难兴邦
- jQuery17(html,attr,removeAttr,动态创建元素)
- VS2013的MFC,获取程序的句柄
- python在Windows环境下如何快速安装 各类包
- c语言。利用交换概览把值从大到小输出
- 使用git开发最常用命令和操作