Liệt kê các xâu con


Submit solution

Points: 3
Time limit: 1.0s
Memory limit: 98M

Author:
Problem types
Allowed languages
Ada, Assembly, Awk, C, C++, C11, CLANG, CLANGX, Classical, COBOL, Coffee, CSC, D lang, DART, F95, FORTH, Fortrn, GAS32, GO, Haskell, Itercal, Java, kotlin, LEAN, LISP, LUA, MONOVB, Nasm, OCAML, Pascal, Perl, php, PIKE, prolog, Pypy, Python, Ruby 2, RUST, Scala, SCM, SED, SWIFT, TCL, TUR, V8JS, VB, ZIG

Cho một xâu ký tự x, một xâu con là một dãy liên tục các ký tự trong x có ít nhất 1 ký tự trở lên. Bạn hãy lập trình nhập vào xâu x và liệt kê tất cả các xâu con phân biệt của x có ít nhất một ký tự trở lên sao cho chúng tăng dần theo từ điển.

Input

Một xâu x có độ dài không quá 50 ký tự gồm toàn ký tự thường Tiếng Anh

Output

Các xâu con phân biệt của x được sắp xếp theo thứ tự từ điển mỗi xâu con trên một dòng

Ví dụ

Input:

banana

Output:

a
an
ana
anan
anana
b
ba
ban
bana
banan
banana
n
na
nan
nana

Ví dụ 2

Input

baoban

Output

a
an
ao
aob
aoba
aoban
b
ba
ban
bao
baob
baoba
baoban
n
o
ob
oba
oban

Comments


  • 0
    huyape7  commented on Sept. 15, 2023, 5:14 p.m.

    include <bits/stdc++.h>

    using namespace std;

    unordered_set<string> D;

    void tach(string s) { if (D.find(s) != D.end()) { return; } D.insert(s); if (s.length() > 1) { tach(s.substr(1)); tach(s.substr(0, s.length() - 1)); } }

    int main() { string string1=""; getline(cin,string1); tach(string1); vector<string> z(D.begin(), D.end()); sort(z.begin(), z.end()); for (const string& str : z) { cout << str <<endl; }

    return 0;

    }