Programozó versenyek

Informatikai versenyfeladatok, gyakorló feladatsor, 2012. április 23.

2012. április 23. 0:00 – 2012. május 21. 0:50

ShellSort

He made each turtle stand on another one's back
And he piled them all up in a nine-turtle stack.
And then Yertle climbed up. He sat down on the pile.
What a wonderful view! He could see 'most a mile!

Yertle király szeretné átrendezni a teknőstrónját úgy, hogy a legmagasabb rangú nemesei és a legközelebbi tanácsadói közelebb kerüljenek a trón tetejéhez. Egyetlen művelet használható a teknősök kupacbeli sorrendjének a megváltoztatásához: egy teknős előbújhat a helyéről, és felmászhat a többi teknősön keresztül a kupac tetejére.

A feladatod, hogy egy teknőskupac eredeti rendezettségének és ugyanazon teknőskupac kívánt rendezettségének az ismeretében meghatározz egy olyan minimális műveletsorozatot, amely átrendezi az eredeti kupacot a kívánt kupaccá.

A bemenet specifikációja

A bemenet első sora egy K egész számból áll, amely a tesztesetek számát adja meg. Minden teszteset egy n egész számmal kezdődik, amely a kupacban elhelyezkedő teknősök számát jelenti. A következő n sor a teknőskupac eredeti sorrendjét írja le. Mindegyik sor egy teknős nevét tartalmazza, kezdve a kupac tetején lévő teknőssel, a kupac alján lévő teknős felé haladva. A teknősöknek egyedi nevük van, amelyek nem több, mint nyolcvan karakter hosszúságú, alfanumerikus karaktereket, a szóköz karaktert és a pontot („.”) tartalmazó sztringek. A bemenet következő n sora a kupac kívánt sorrendjét írja le, most is felülről lefelé nevezve meg a teknősöket. Minden teszteset összesen pontosan 2n+1 sorból áll. A teknősök száma (n) kisebb vagy egyenlő lesz, mint kétszáz.

A kimenet specifikációja

Minden tesztesetre teknősnevek egy sorozatát kell a kimenetre írni, soronként egy nevet, abban a sorrendben, amelyben a teknősöknek el kell hagyniuk a helyüket a kupacban, és fel kell mászniuk a kupac tetejére. A műveletsorozatnak az eredeti kupacot át kell alakítania a kívánt kupaccá, és a lehető legrövidebbnek kell lennie. Ha egynél több legrövidebb megoldás lehetséges, bármelyik megoldás kiírható. Minden teszteset után egy-egy üres sort is a kimenetre kell írni.

Példa bemenet

  1. 2
  2. 3
  3. Yertle
  4. Duke of Earl
  5. Sir Lancelot
  6. Duke of Earl
  7. Yertle
  8. Sir Lancelot
  9. 9
  10. Yertle
  11. Duke of Earl
  12. Sir Lancelot
  13. Elizabeth Windsor
  14. Michael Eisner
  15. Richard M. Nixon
  16. Mr. Rogers
  17. Ford Perfect
  18. Mack
  19. Yertle
  20. Richard M. Nixon
  21. Sir Lancelot
  22. Duke of Earl
  23. Elizabeth Windsor
  24. Michael Eisner
  25. Mr. Rogers
  26. Ford Perfect
  27. Mack
letöltés szöveges állományként

A példa bemenethez tartozó kimenet

  1. Duke of Earl
  2. Sir Lancelot
  3. Richard M. Nixon
  4. Yertle
letöltés szöveges állományként
Debreceni Egyetem, Informatikai Kar, v. 2019.03.01.