Maksimum farklı alt dize sayısı


9

Açıklama

Bir uzunluk nve bir alfabe boyutu verildiğinde k>0, programınız maksimum sayıda benzersiz alt dizeye sahip olan parametrelerle dizelerin sayısını belirlemelidir. Bu durumda, OEIS A134457k=2 üretir .

Misal

Örneğin, 2210alt dizeleri sahiptir , 2, 22, 221, 2210, 2, 21, 210, 1, 10, ve 0, ancak 11 bir toplam, 2sadece 10 benzersiz alt dizeleri sahiptir, böylece, iki kez görünür.

Bu 3 farklı semboller ihtiva eden bir uzunluğu 4 dizgisi için mümkün olduğu kadar çok, fakat dahil olmak üzere 36 tieing şeritlerinin toplam 35 diğer dizileri ile bağlar 0012, 2101ve 0121. Bu nedenle, n=4ve için k=3, programınız 36 çıktı almalıdır.

Test Durumları

n    k    output

0    5    1
1    3    3
5    1    1
9    2    40
2    3    6
5    5    120

3
Bazı örnekler verebilir misiniz? Bu kısa açıklamadan meydan okumayı takip etmek biraz zor.
ETHproductions

Yani olmaz n=2, k=3çıkış 9: 11,12,21,22,31,32,33,13,23?
veganaiZe

@veganaiZe Çift hane tekrarlanan bir alt dizeye sahiptir.
user1502040

Yanıtlar:



3

Pyth, 12 bayt

l.Ml{.:Z)^UE

Çevrimiçi deneyin.

Saf kaba kuvvet.

açıklama

  • Örtük: Qprograma ekleyin .
  • Örtük: içindeki bir giriş ( n) satırını okuyun ve değerlendirin Q.
  • E: bir girdi ( k) satırını okur ve değerlendirir .
  • U: menzil olsun [0, ..., k-1].
  • ^: tüm nuzunluk dizelerini al [0, ..., k-1].
  • .M: işlev için maksimum değer verenler bulun f(Z):
    • .:Z: alt dizelerini bul Z
    • {: kopyaları kaldır
    • l: benzersiz alt dizelerin sayısını al
  • l: bu dizelerin sayısını al

2

Mathematica, 96 bayt

Last[Last/@Tally[Length@Union@Flatten[Table[Partition[#,i,1],{i,s}],1]&/@Tuples[Range@#2,s=#]]]&

2

Haskell, 82 bayt

import Data.Lists
l=length
n#k=l$argmaxes(l.nub.powerslice)$mapM id$[1..k]<$[1..n]

Kullanım örneği: 9 # 2-> 40.

Nasıl çalışır:

       [1..k]<$[1..n]  --  make a list of n copies of the list [1..k]
      mapM id          --  make a list of all combinations thereof, where
                       --  the 1st element is from the f1st list, 2nd from 2nd etc
  argmaxes             --  find all elements which give the maximum value for function:
     l.nub.powerslice  --    length of the list of unique sublists
l                      --  take the length of this list
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.