日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

hihocoder 1152 Lucky Substrings

發(fā)布時間:2023/11/27 生活经验 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hihocoder 1152 Lucky Substrings 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

#1152 : Lucky Substrings

時間限制:10000ms 單點時限:1000ms 內(nèi)存限制: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

題目大意:
給定一個只包含小寫字母的字符串S。對于S的任意一個非空子串,若其包含的不同字母個數(shù)為fibonacci數(shù)列中的數(shù),
則我們認(rèn)為這個子串為幸運的。請找出S的所有幸運的子串。
不要重復(fù)輸出。

解題思路

一個簡單的解題思路是直接枚舉S的所有子串,并對其不同字母個數(shù)進行統(tǒng)計。

S均由小寫字母組成,因此其包含的不同字母個數(shù)最多為26個。而在26以內(nèi)且屬于fibonacci數(shù)列的數(shù)為1,2,3,5,8,13,21。因此只有當(dāng)子串中不同字母的個數(shù)為1,2,3,5,8,13,21時,該子串才是幸運的。

接下來即是如何統(tǒng)計一個子串的不同字母個數(shù),下面給出一種比較樸素的方法:

isLucky(subString):alphabet[] = falsecount = 0For c in subStringIf not alphabet[c] Thenalphabet[c] = truecount = count + 1End IfEnd ForReturn (count is Fibonaccid number)

S的最大長度為?N?= 100,該樸素算法的時間復(fù)雜度為O(N^3),是可以通過所有數(shù)據(jù)的。

同時,我們可以通過一個小的優(yōu)化,將算法的時間復(fù)雜度減少的O(N^2)。

在已經(jīng)知道S[i..j]字母個數(shù)的情況下,我們可以直接推導(dǎo)出S[i..j+1]的不同字母個數(shù)。

首先我們需要改進isLucky函數(shù):

alphabet[] = false
count = 0
isLucky(c):If not alphabet[c] Thenalphabet[c] = truecount = count + 1End IfReturn (count is Fibonaccid number)

這里我們把alphabetcount從函數(shù)中抽取出來,作為了全局變量。同時,isLucky的參數(shù)變?yōu)閱蝹€字符,每次將新增的S[j+1]加入統(tǒng)計中。

下面是函數(shù)的主體部分:

For i = 0 .. len - 1alphabet[] = falsecount = 0For j = i .. len - 1// 此時isLucky返回的是S[i..j]的不同字母數(shù)量是否滿足條件If isLucky(S[j]) ThenansList.push(S[i..j])End IfEnd For
End For

最后只需要將ansList所保存的子串進行排序去重后輸出,即可順利通過該題目。

  
 1 #include <iostream>
 2 #include <string>
 3 #include <cstring>
 4 #include <cstdlib>
 5 #include <set>
 6 using namespace std;
 7 string s;
 8 
 9 bool IsFibonaccidNum(int n){
10     return (n == 1 || n == 2 || n == 3 || n == 5 || n == 8 || n == 13 || n == 21);
11 }
12 
13 bool isLucky(int i, int j){
14     int alphabet[26] = {0};
15     //memset(alphabet, 0, sizeof(alphabet));
16     int count = 0;
17     for(int k = i; k <= j; k++){
18         if(alphabet[s[k] - 'a'] == 0){
19             alphabet[s[k] - 'a'] = 1;
20             count++;
21         }
22     }
23     return (IsFibonaccidNum(count));
24 }
25 
26 int main(){
27     set<string> set1;
28     cin >> s;
29     int len = s.length();
30     for(int i = 0; i < len; i++){
31         for(int j = i; j < len; j++){
32             if(isLucky(i, j)){
33                 string str = s.substr(i, j - i + 1);
34                 set1.insert(str);
35             }
36         }
37     }
38     
39     for(set<string>::iterator it = set1.begin(); it != set1.end(); it++){
40         cout << *it << endl;
41     }
42     //system("pause");
43     return 0;
44 }
  
 1 #include <iostream>
 2 #include <string>
 3 #include <cstring>
 4 #include <cstdlib>
 5 #include <set>
 6 using namespace std;
 7 int alphabet[26] = {0}, cnt;
 8 
 9 bool IsFibonaccidNum(int n){
10     return (n == 1 || n == 2 || n == 3 || n == 5 || n == 8 || n == 13 || n == 21);
11 }
12 
13 bool isLucky(char c){
14         if(alphabet[c - 'a'] == 0){
15             alphabet[c - 'a'] = 1;
16             cnt++;
17         }
18     return (IsFibonaccidNum(cnt));
19 }
20 
21 int main(){
22     set<string> set1;
23     string s;
24     cin >> s;
25     int len = s.length();
26     for(int i = 0; i < len; i++){
27         memset(alphabet, 0, sizeof(alphabet));
28         cnt = 0;
29         for(int j = i; j < len; j++){
30             if(isLucky(s[j])){
31                 string str = s.substr(i, j - i + 1);
32                 set1.insert(str);
33             }
34         }
35     }
36     
37     for(set<string>::iterator it = set1.begin(); it != set1.end(); it++){
38         cout << *it << endl;
39     }
40     //system("pause");
41     return 0;
42 }

?




轉(zhuǎn)載于:https://www.cnblogs.com/qinduanyinghua/p/5828450.html

總結(jié)

以上是生活随笔為你收集整理的hihocoder 1152 Lucky Substrings的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 桃色视频网 | 中文字幕天堂 | 99re最新 | 16一17女人毛片 | 久久精品国产亚洲AV熟女 | 五月婷婷综 | 日本午夜精华 | 精品国产乱 | 伊人草 | 一呦二呦三呦精品网站 | 午夜av免费观看 | 男人天堂网站 | 91麻豆国产在线 | 精品无码一区二区三区电影桃花 | 暖暖成人免费视频 | 国产资源网 | 欧美性开放视频 | 亚洲不卡一区二区三区 | 91正在播放| 欧美天堂久久 | 97久草 | 免费人成在线观看网站 | 人人草人人搞 | 色偷偷亚洲 | 操日本老太太 | 久久yy| 国产激情视频网站 | 欧美激情视频一区二区三区 | 亚洲熟妇无码av | 免费在线小视频 | 久久久久久不卡 | 伊人毛片 | 国产99久久九九精品无码 | 一级黄色片a | v8888av| 亚洲一区二区自拍偷拍 | 波多野结衣毛片 | 日本美女视频 | 看片在线| av一区二区三区在线 | 人人爱人人插 | 亚洲av片不卡无码久久 | 午夜小视频网站 | 亚洲资源av | 国产精品久久久久久在线观看 | 亚洲香蕉在线 | 伊人久久天堂 | 高清一区二区三区四区五区 | 国产免费高清视频 | 亚洲免费黄色 | 亚洲精品乱码久久久久久久久久久久 | 亚洲视频二区 | 久久国产免费 | 淫视频在线观看 | 成人av地址 | 精精国产| 亚洲久久影院 | 国产美女三级无套内谢 | 天天干天天操天天干 | youjizz.com中国 | 久久小草 | 精品爆乳一区二区三区无码av | 两性囗交做爰视频 | 亚洲天堂免费观看 | 国产一区二区三区四区精 | 亚洲av片不卡无码久久 | 蜜桃视频在线入口www | 成人性视频在线 | 黄色aaaaa| 中文一区二区在线播放 | 国产日韩欧美久久 | 中文字幕一区二区三区在线不卡 | 一区视频在线播放 | 一级全黄裸体免费视频 | 欧美一区成人 | 免费网站黄色 | 99热99精品 | 免费三级在线 | 一级做a免费视频 | 国产免费三片 | 五月婷在线视频 | 精品网站999www| 国产一区二区在线免费 | 狠狠躁18三区二区一区视频 | 成人午夜激情视频 | 激情小说亚洲色图 | 国产视频久久久久久久 | 亚洲成人一区二区三区 | 蜜芽一区二区 | 国产在线观看免费 | 蜜桃91麻豆精品一二三区 | 婷婷激情电影 | 亚洲一区在线视频观看 | 91精彩视频 | 欧美人与按摩师xxxx | 欧美日韩人妻精品一区二区三区 | 亚洲精品推荐 | 多啪啪免费视频 | 日韩精品手机在线 |