Seorang musafir perlu menginap selama n hari di sebuah hotel di luar kota. Dia kehabisan uang tunai dan kartu kreditnya telah kedaluwarsa. Tetapi dia memiliki rantai emas dengan n link.
Aturan di hotel ini adalah penghuni harus membayar sewa setiap pagi. Pelancong mencapai kesepakatan dengan manajer untuk membayar satu mata rantai emas untuk setiap hari. Tetapi manajer juga menuntut agar pelancong harus membuat kerusakan sesedikit mungkin pada rantai sambil membayar setiap hari. Dengan kata lain, dia harus menemukan solusi untuk memotong sesedikit mungkin tautan.
Memotong tautan menciptakan tiga subkunci: satu berisi hanya tautan terpotong, dan satu di setiap sisi. Sebagai contoh, memotong tautan ketiga dari rantai panjang 8 menciptakan subchains panjang [2, 1, 5]. Manajer senang melakukan perubahan, sehingga pelancong dapat membayar hari pertama dengan rantai panjang 1, lalu hari kedua dengan rantai panjang 2, mendapatkan rantai pertama kembali.
Kode Anda harus memasukkan panjang n , dan menampilkan daftar tautan untuk memotong panjang minimum.
Aturan :
- n adalah bilangan bulat> 0.
- Anda dapat menggunakan pengindeksan berbasis 0 atau 1 untuk tautan.
- Untuk beberapa angka, solusinya tidak unik. Misalnya, jika
n = 15
keduanya[3, 8]
dan[4, 8]
merupakan output yang valid. - Anda dapat mengembalikan daftar, atau mencetaknya dengan pemisah yang masuk akal.
- Ini adalah kode-golf , jadi kode terpendek dalam byte menang.
Kasus uji :
Input Output (1-indexed)
1 []
3 [1]
7 [3]
15 [3, 8]
149 [6, 17, 38, 79]
Contoh terperinci
Untuk n = 15, memotong tautan 3 dan 8 menghasilkan subchains of length [2, 1, 4, 1, 7]
. Ini adalah solusi yang valid karena:
1 = 1
2 = 2
3 = 1+2
4 = 4
5 = 1+4
6 = 2+4
7 = 7
8 = 1+7
9 = 2+7
10 = 1+2+7
11 = 4+7
12 = 1+4+7
13 = 2+4+7
14 = 1+2+4+7
15 = 1+1+2+4+7
Tidak ada solusi dengan hanya satu potongan, jadi ini adalah solusi optimal.
Tambahan
Perhatikan bahwa masalah ini terkait dengan partisi integer. Kami sedang mencari partisi P dari n sehingga semua bilangan bulat dari 1 sampai n memiliki setidaknya satu patition yang merupakan bagian dari P .
Berikut adalah video YouTube tentang satu kemungkinan algoritma untuk masalah ini.
1+2
. Dari mana datangnya 2-link-chain kedua?