Ini adalah semacam pertanyaan jarak edit, dan sangat mudah. Saya benar-benar mati otak tentang hal ini dan tidak bisa mengetahuinya sejauh ini.
Diberikan serangkaian angka, mis
[3, 1, 1, 1]
Bagaimana cara yang paling efisien mengubah semua angka menjadi angka yang sama, dengan jumlah minimum "bergerak"? Dengan "bergerak" berarti menambah atau menghapus satu dari nomor.
Dalam contoh di atas, gerakan paling efisien adalah:
[1, 1, 1, 1]
Ini akan membutuhkan 2 gerakan, mengurangi angka pertama dua kali.
Saya tidak dapat menemukan cara terbaik untuk mengetahuinya, mengingat susunan ratusan angka yang jauh lebih besar.
Saya awalnya mencoba menghitung angka rata-rata bulat (jumlah semua dibagi dengan panjang), dan kemudian menguranginya menjadi rata-rata yang dihitung, tetapi contoh di atas mematahkan ini, membutuhkan 4 langkah alih-alih 2.
Saya kira saya bisa membayangkan:
- Rata-rata,
- Mode,
- Median
dan dapatkan jarak edit masing-masing, pilih jarak minimum. Namun, saya tidak yakin ini benar dalam setiap contoh. Bagaimana saya bisa tahu?