Số lượng tối đa của các chuỗi con khác nhau


9

Sự miêu tả

Cho một chiều dài nvà kích thước bảng chữ cái k>0, chương trình của bạn phải xác định số lượng chuỗi với các tham số có số lượng chuỗi con duy nhất tối đa. Trong trường hợp k=2, điều này tạo ra OEIS A134457 .

Thí dụ

Ví dụ, 2210có chuỗi con , 2, 22, 221, 2210, 2, 21, 210, 1, 10, và 0, với tổng số 11. Tuy nhiên, 2xuất hiện hai lần, vì vậy nó chỉ có 10 chuỗi con độc đáo.

Đây là càng nhiều càng tốt cho một chiều dài 4 chuỗi chứa 3 biểu tượng khác nhau, nhưng nó quan hệ với 35 dây khác với tổng số 36 chuỗi tieing bao gồm 0012, 21010121. Do đó, cho n=4k=3, chương trình của bạn nên xuất 36.

Các trường hợp thử nghiệm

n    k    output

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

3
Bạn có thể vui lòng cho một số ví dụ? Thật khó để theo dõi thử thách từ mô tả rất ngắn đó.
Sản xuất ETH

Vì vậy n=2, k=3đầu ra 9 : 11,12,21,22,31,32,33,13,23?
veganaiZe

@veganaiZe Các chữ số đôi có một chuỗi con lặp lại.
user1502040

Câu trả lời:



3

Bình thường, 12 byte

l.Ml{.:Z)^UE

Hãy thử trực tuyến.

Lực lượng vũ phu.

Giải trình

  • Ngụ ý: nối Qvào chương trình.
  • Ngụ ý: đọc và đánh giá một dòng đầu vào ( n) trong Q.
  • E: đọc và đánh giá một dòng đầu vào ( k).
  • U: có được một phạm vi [0, ..., k-1].
  • ^: lấy tất cả các nchuỗi thứ năm của [0, ..., k-1].
  • .M: tìm những cái cung cấp tối đa cho hàm f(Z):
    • .:Z: tìm các chuỗi con của Z
    • {: Loại bỏ các bản sao
    • l: lấy số lượng các chuỗi con duy nhất
  • l: lấy số chuỗi như vậy

2

Toán học, 96 byte

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

2

Haskell, 82 byte

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

Ví dụ sử dụng: 9 # 2-> 40.

Làm thế nào nó hoạt động:

       [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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.