LUCKY STRING

来源:互联网 发布:深圳网络推广工资标准 编辑:程序博客网 时间:2024/06/05 14:29

题目描述
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

#include<iostream>#include<fstream>#include<cstdio>#include<algorithm>#include<cmath>#include<cstring>#include<string>#include<cstdlib>#include<sstream>#include<set>#include <iterator>using namespace std;typedef long long LL;int fib[10]={1,2,3,5,8,13,21,34,55,89};int fla[110];int Sum(string s){    int p[26]={0};    int num=0;    for(int i=0;i<s.length();i++)        if(p[s[i]-'a']==0){            p[s[i]-'a']=1;            num++;        }    return num;}int main(){    for(int i=0;i<10;i++)        fla[fib[i]]=1;    string str;    set<string> ans;    cin>>str;    int n=1;    while(n<str.length()){        for(int i=0;i<=str.length()-n;i++){            string ss=str.substr(i,n);            if(fla[Sum(ss)])                ans.insert(ss);        }        n++;    }    set<string>::iterator it;    for(it=ans.begin();it!=ans.end();it++)        cout<<*it<<endl;    return 0;}
0 0
原创粉丝点击