Listassa on lukujen permutaatio, missä on parillinen. Tehtäväsi on selvittää, voiko listan järjestää seuraavan operaation avulla: valitaan kokonaisluku väliltä ja vaihdetaan keskenään listan ensimmäistä ja viimeistä lukua järjestys säilyttäen.
Esimerkiksi kun , listan voi järjestää seuraavasti:
Tässä tapauksessa ensimmäisessä operaatiossa ja toisessa operaatiossa . Sen sijaan listaa ei ole mahdollista järjestää mitenkään operaation avulla.
Voit olettaa, että on välillä . Tavoitteena on, että algoritmin aikavaativuus on tai .
Python
Toteuta tiedostoon movesort.py
funktio check
, joka tarkastaa, voiko listan järjestää.
def check(t): # TODO if __name__ == "__main__": print(check([3,1,4,2])) # True print(check([3,1,2,4])) # False print(check([1,2])) # True print(check([4,5,6,1,2,3])) # True print(check([4,5,6,3,2,1])) # False
Java
Toteuta tiedostoon MoveSort.java
metodi check
, joka tarkastaa, voiko listan järjestää.
public class MoveSort { public boolean check(int[] t) { // TODO } public static void main(String[] args) { MoveSort m = new MoveSort(); System.out.println(m.check(new int[] {3,1,4,2})); // true System.out.println(m.check(new int[] {3,1,2,4})); // false System.out.println(m.check(new int[] {1,2})); // true System.out.println(m.check(new int[] {4,5,6,1,2,3})); // true System.out.println(m.check(new int[] {4,5,6,3,2,1})); // false } }