Sorun
Üst üste dizilmiş 7 kova düşünün. Her kova en fazla 2 elma içerebilir. 1 ile 13 arasında etiketlenmiş 13 elma vardır. 7 kova arasında dağıtılır. Örneğin,
{5,4}, {8,10}, {2,9}, {13,3}, {11,7}, {6,0}, {12,1}
Burada 0 boş alanı temsil eder. Elmaların her bir kova içinde görünme sırası uygun değildir (örneğin, {5,4}, {4,5} 'e eşdeğerdir).
Başka bir elma için hedef kovada yer olması koşuluyla, herhangi bir elmayı bir kovadan bitişik bir kovaya taşıyabilirsiniz. Her hareket, taşımak istediğiniz elmanın sayısı ile tanımlanır (bu açıktır, çünkü sadece bir boş alan vardır). Örneğin, hareketin uygulanması
7
Yukarıdaki düzenlemeye
{5,4}, {8,10}, {2,9}, {13,3}, {11,0}, {6,7}, {12,1}
Amaç
STDIN'den bir düzenleme okuyan ve aşağıdaki düzenlemeye ayıran bir program yazın
{1,2}, {3,4}, {5,6}, {7,8}, {9,10}, {11,12}, {13,0}
mümkün olduğunca az hamle kullanarak. Yine, elmaların her bir kova içinde ortaya çıkma sırası ilgili değildir. Kovaların sırası önemlidir. Virgüllerle ayrılmış her bir düzenlemeyi sıralamak için kullanılan hareketlerin çıktısını almalıdır. Örneğin,
13, 7, 6, ...
Puanınız, aşağıdaki düzenlemeleri çözmek için gereken hamle sayısına eşittir:
{8, 2}, {11, 13}, {3, 12}, {6, 10}, {4, 0}, {1, 7}, {9, 5}
{3, 1}, {6, 9}, {7, 8}, {2, 11}, {10, 5}, {13, 4}, {12, 0}
{0, 2}, {4, 13}, {1, 10}, {11, 6}, {7, 12}, {8, 5}, {9, 3}
{6, 9}, {2, 10}, {7, 4}, {1, 8}, {12, 0}, {5, 11}, {3, 13}
{4, 5}, {10, 3}, {6, 9}, {8, 13}, {0, 2}, {1, 7}, {12, 11}
{4, 2}, {10, 5}, {0, 7}, {9, 8}, {3, 13}, {1, 11}, {6, 12}
{9, 3}, {5, 4}, {0, 6}, {1, 7}, {12, 11}, {10, 2}, {8, 13}
{3, 4}, {10, 9}, {8, 12}, {2, 6}, {5, 1}, {11, 13}, {7, 0}
{10, 0}, {12, 2}, {3, 5}, {9, 11}, {1, 13}, {4, 8}, {7, 6}
{6, 1}, {3, 5}, {11, 12}, {2, 10}, {7, 4}, {13, 8}, {0, 9}
Evet, bu düzenlemelerin her birinin bir çözümü var.
kurallar
- Çözümünüz, hareket başına kova sayısında polinom zamanda çalışmalıdır. Mesele akıllı buluşsal yöntemler kullanmaktır.
- Tüm algoritmalar deterministik olmalıdır.
- Beraberlik durumunda, en kısa bayt sayısı kazanır.