จำนวนสูงสุดของสตริงย่อยที่แตกต่างกัน


9

ลักษณะ

เมื่อกำหนดความยาวnและขนาดตัวอักษรk>0โปรแกรมของคุณจะต้องกำหนดจำนวนสตริงด้วยพารามิเตอร์เหล่านั้นซึ่งมีจำนวนสตริงย่อยสูงสุด ในกรณีของการk=2นี้สร้าง OEIS A134457

ตัวอย่าง

ตัวอย่างเช่น2210มีสตริง , 2, 22, 221, 2210, 2, 21, 210, 1, 10และ0รวม 11 แต่2ปรากฏขึ้นเป็นครั้งที่สองจึงมีเพียง 10 สตริงที่ไม่ซ้ำกัน

นี่คือมากที่สุดเท่าที่เป็นไปได้สำหรับสตริงความยาว 4 มี 3 สัญลักษณ์ที่แตกต่างกัน แต่ความสัมพันธ์กับ 35 สายอื่น ๆ รวมเป็น 36 สาย tieing รวมทั้ง0012, และ2101 0121ดังนั้นสำหรับn=4และk=3โปรแกรมของคุณควรส่งออก 36

กรณีทดสอบ

n    k    output

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

3
คุณช่วยยกตัวอย่างได้ไหม เป็นการยากที่จะติดตามความท้าทายจากคำอธิบายสั้น ๆ นั้น
ETHproductions

ดังนั้นจะไม่n=2, k=3การส่งออก 9: 11,12,21,22,31,32,33,13,23?
veganaiZe

@veganaiZe ตัวเลขสองหลักมีสตริงย่อยซ้ำ
user1502040

คำตอบ:


2

เยลลี่ขนาด 9 ไบต์

ṗµẆQLµ€ML

ลองออนไลน์!

ป้อนข้อมูลในลำดับที่กลับรายการ กำลังดุร้าย.


บันทึกไบต์โดยหลีกเลี่ยงโซ่สามอะตอมกับ transpose และหาง:ṗẆQ$€ZṪL
โจนาธานอัลลัน

3

Pyth, 12 ไบต์

l.Ml{.:Z)^UE

ลองออนไลน์

กำลังดุร้ายบริสุทธิ์

คำอธิบาย

  • โดยนัย: ผนวกQเข้ากับโปรแกรม
  • นัย: อ่านและประเมินสายของใส่ ( n) Qใน
  • E: อ่านและประเมินบรรทัดอินพุต ( k)
  • U: [0, ..., k-1]ได้รับช่วง
  • ^: ได้รับทุกสายมีความยาวของn[0, ..., k-1]
  • .M: ค้นหาสิ่งที่ให้ประโยชน์สูงสุดสำหรับการใช้งานf(Z):
    • .:Z: ค้นหาสตริงย่อยของ Z
    • {: ลบรายการที่ซ้ำ
    • l: รับจำนวนสตริงย่อยที่ไม่ซ้ำกัน
  • l: รับจำนวนสตริงดังกล่าว


2

Haskell, 82 ไบต์

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

ตัวอย่างการใช้งาน: ->9 # 240

มันทำงานอย่างไร:

       [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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.