而在26以内且属于fibonacci数列的数为1,2,3,5,8,13,21时间限制:10000ms
单点时限:1000ms
内存限制:256MB

描述

A string s is LUCKY if and only if the number of different characters in s is a fibonacci number. Given a string consisting of only lower case letters, output all its lucky non-empty substrings in lexicographical order. Same substrings should be printed once.

输入

A string consisting no more than 100 lower case letters.

输出

Output the lucky substrings in lexicographical order, one per line. Same substrings should be printed once.

样例输入
aabcd
样例输出
a
aa 
aab 
aabc 
ab 
abc 
b 
bc 
bcd 
c 
cd 
d
思路:暴力枚举。26以内斐波那契数打下表就可以了。用set去重排序。复杂度O(n*n*n);
我用前缀和,感觉并没有优化。
  1 #include<stdio.h>  2 #include<algorithm>  3 #include<iostream>  4 #include<string.h>  5 #include<stdlib.h>  6 #include<math.h>  7 #include<cstdio>  8 #include<queue>  9 #include<stack> 10 #include<map> 11 #include<set> 12 using namespace std; 13 char cou[200]; 14 int fei[30]; 15 int flag[30]; 16 char dd[200]; 17 set<string>my; 18 set<string>::const_iterator it; 19 typedef struct pp 20 { 21     int al[26]; 22     pp() 23     { 24         memset(al,0,sizeof(al)); 25     } 26 } ss; 27  28 int main(void) 29 { 30     int n,i,j,k,p,q; 31     fei[1]=1; 32     fei[2]=1; 33     for(i=3; i<30; i++) 34     { 35         fei[i]=fei[i-1]+fei[i-2]; 36         if(fei[i]>=26) 37         { 38             break; 39         } 40     } 41     int zz=i; 42     for(i=1; i<zz; i++) 43         flag[fei[i]]=1; 44     while(scanf("%s",cou)!=EOF) 45     { 46         my.clear(); 47         ss ak[200]; 48         int l=strlen(cou); 49         int cnt=0; 50         ak[cnt].al[cou[0]-'a']++; 51         for(i=1; i<l; i++) 52         { 53             ak[i].al[cou[i]-'a']++; 54             for(j=0; j<26; j++) 55             { 56                 ak[i].al[j]+=ak[i-1].al[j]; 57             } 58         } 59         int yy[26]; 60         for(i=0; i<l; i++) 61         { 62             for(int s=0; s<26; s++) 63             { 64                 yy[s]=ak[i].al[s]; 65             } 66             int ans=0; 67             for(int s=0; s<26; s++) 68             { 69                 if(yy[s]) 70                 { 71                     ans++; 72                 } 73  74             } 75             if(flag[ans]) 76             { 77                 memset(dd,0,sizeof(dd)); 78                 int z=0; 79                 int s; 80                 for( s=0; s<=i; s++) 81                 { 82                     dd[z++]=cou[s]; 83                 } 84                 my.insert(dd); 85  86             } 87         } 88         for(i=0; i<l; i++) 89         { 90             for(j=i+1; j<l; j++) 91             { 92                 for(int s=0; s<26; s++) 93                 { 94                     yy[s]=ak[j].al[s]-ak[i].al[s]; 95                 } 96                 int ans=0; 97                 for(int s=0; s<26; s++) 98                 { 99                     if(yy[s])100                     {101                         ans++;102                     }103 104                 }105                 if(flag[ans])106                 {107                     memset(dd,0,sizeof(dd));108                     int z=0;109                     int s;110                     for( s=i+1; s<=j; s++)111                     {112                         dd[z++]=cou[s];113                     }114                     my.insert(dd);115                 }116             }117         }118         for(it=my.begin(); it!=my.end(); it++)119         {120             cout<<*it<<endl;121         }122     }123     return 0;124 }

Lucky Substrings的更多相关文章

  1. hihocoder 1152 Lucky Substrings

    #1152 : Lucky Substrings 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 A string s is LUCKY if and only if t ...

  2. 微软2016校园招聘在线笔试第二场 题目1 : Lucky Substrings

    时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 A string s is LUCKY if and only if the number of different ch ...

  3. hihocoder #1152 Lucky Substrings 【字符串处理问题】strsub()函数+set集合去重

    #1152 : Lucky Substrings时间限制:10000ms单点时限:1000ms内存限制:256MB描述A string s is LUCKY if and only if the nu ...

  4. Lucky String

    Lucky String -- 微软笔试 标签(空格分隔): 算法 A string s is LUCKY if and only if the number of different charact ...

  5. 【每天一道算法题】Lucky String

    A string s is LUCKY if and only if the number of different characters in s is a fibonacci number. Gi ...

  6. lucky 的 时光助理(2)

    lucky小姐说:昨天晚上他喝醉了,发消息说他想我了,说他后悔了. 我很惊讶. 我问lucky:你们很久都没有联系, 突然说... 你怎么想. 没错,'他'就是lucky的前男友. lucky看着我, ...

  7. lucky 的 时光助理

    2017年的lucky小姐,厌倦了现在的工作,她觉得这些的工作对于她而言不具备挑战性,她在迷茫春节过后该如何选择, 这里是距她走出校门整整一年的时光. lucky小姐从开发走向了实施,目的是想周游这个 ...

  8. [LeetCode] Unique Substrings in Wraparound String 封装字符串中的独特子字符串

    Consider the string s to be the infinite wraparound string of "abcdefghijklmnopqrstuvwxyz" ...

  9. ZOJ3944 People Counting ZOJ3939 The Lucky Week (模拟)

    ZOJ3944 People Counting ZOJ3939 The Lucky Week 1.PeopleConting 题意:照片上有很多个人,用矩阵里的字符表示.一个人如下: .O. /|\ ...

随机推荐

  1. Ubuntu 和 windows1下文件夹共享的指令

    第一个是通过拖拉的方式将文件放到当前的目录下面,即 mv +路径 + . 第二个是将文件放到了硬盘里面/mnt/hgfs/linusshare/里面

  2. 修复UE4编辑器,ClearLog操作导致的崩溃

    UE4 4.24.3版本,编辑器Output Log窗口中,右键--Clear Log操作很大概率会导致编辑器奔溃:解决办法: 相关文件: Engine\Source\Developer\Output ...

  3. 《Redis设计与实现》知识点目录

    Redis设计与实现 第一部分 数据结构与对象 第二章 简单动态字符串 p8 简单动态字符串SDS 2.1 SDS的定义 p9 每个sds.h/sdshdr结构表示一个SDS值 2.2 SDS与C字符 ...

  4. linux 软链接与查看历史指令

    ln 说明 软连接也叫符号链接,类似于windows里的快捷方式,主要存放了路径. 基本语法 ln -s[原文件或目录][软连接名] 删除软链接 [root@hadoop102 ~]# rm -rf ...

  5. Spark基础:(五)Spark编程进阶

    共享变量 (1)累加器:是用来对信息进行聚合的,同时也是Spark中提供的一种分布式的变量机制,其原理类似于mapreduce,即分布式的改变,然后聚合这些改变.累加器的一个常见用途是在调试时对作业执 ...

  6. Git提交规范

    Commit message 的格式 每次提交,Commit message 都包括三个部分:Header,Body 和 Footer. <type>(<scope>): &l ...

  7. Linux:$?,$n,$#,$0

    $? 获取执行上一个指令的返回值(0为成功,非零为失败) $n 获取当前执行的shell脚本的第n个参数值,n=1...9,当n=0的时表示脚本的文件名,如果n大于9,大括号括起来${10} $# 获 ...

  8. 图书管理系统总结——数据库操纵(二):DML语句

    这里以最基本的DML语句作为例子,其他各种复杂的DML语句可以根据这些基本JDBC语句得到. 一.查询表格 这里以两张表关联查询为例,采用动态方式,根据输入的条件在WHERE语句后面接上相应的各种条件 ...

  9. win10更新后任务栏卡死 的原因和解决办法

    @ 目录 现象: 原因: 第一步:断网并关闭资讯和兴趣 第二步:卸载更新 第三步:关闭win10自动更新 第四步:永久关闭资讯和兴趣 现象: win10 更新后,开机任务栏卡死,点开始反应,设置页面无 ...

  10. netty系列之:一个价值上亿的网站速度优化方案

    目录 简介 本文的目标 支持多个图片服务 http2处理器 处理页面和图像 价值上亿的速度优化方案 总结 简介 其实软件界最赚钱的不是写代码的,写代码的只能叫马龙,高级点的叫做程序员,都是苦力活.那么 ...