3153 - eliminaren

De la Universitas MediaWiki
Versiunea pentru tipărire nu mai este suportată și poate avea erori de randare. Vă rugăm să vă actualizați bookmarkurile browserului și să folosiți funcția implicită de tipărire a browserului.

Cerința

Se citesc de la tastatură un cuvânt s format din litere mici distincte și un număr natural n. Să se afișeze pe ecran toate cuvintele care se pot obține din s eliminând exact n litere.

Eliminarea se face începând cu literele de la sfârșitul cuvântului, iar ordinea din cuvânt a literelor nu se schimbă (vezi explicația din exemplu).

Date de intrare

Programul citește de la tastatură cuvântul s și numărul n.

Date de ieșire

Programul va afișa pe ecran pe rânduri separate cuvintele care se pot obține din s eliminând exact n litere.

Restricții și precizări

  • Cuvântul s are cel mult 20 de litere
  • Cuvântul s este format din litere mici distincte
  • 1 <= n < numărul de litere ale lui s

Exemplu:

Intrare

dorel 2

Ieșire

dor
doe
dol
dre
drl
del
ore
orl
oel
rel

Explicație

Din cele 5 litere se elimina două, astfel:

dor – se elimina a 4-a si a 5-a litera

doe – se elimina a 3-a si a 5-a litera

dol – se elimina a 3-a si a 4-a litera

dre

drl

del

ore

orl

oel – se elimina prima si a 3-a litera

rel – se elimina prima si a 2-a litera

Rezolvare

def afisare(s, x, n, c):
    rezultat = ''.join(s[x[i] - 1] for i in range(1, n - c + 1))
    print(rezultat)

def bectreching(k, s, x, n, c):
    for i in range(x[k - 1] + 1, n + 1):
        x[k] = i
        if k < n - c:
            bectreching(k + 1, s, x, n, c)
        else:
            afisare(s, x, n, c)

def verifica_restrictii(s, c):
    if len(s) > 20 or not s.islower() or len(s) != len(set(s)) or not (1 <= c < len(s)):
        return False
    return True

def main():
    intrare = input().strip().split()
    s = intrare[0]
    c = int(intrare[1])
    if not verifica_restrictii(s, c):
        print("Datele nu corespund restrictiilor impuse")
        return
    
    n = len(s)
    x = [0] * (n + 1)
    bectreching(1, s, x, n, c)

if __name__ == "__main__":
    main()