[C# Advanced] 5. Rubiks Matrix Time Limit..
Привет,
каква стуктура от данни ползвате за решаването на тази задача? 8 и 9 тест ми гърмят с time limit, ползвам matrix[][] и цикли..
Поздрави,
Привет,
каква стуктура от данни ползвате за решаването на тази задача? 8 и 9 тест ми гърмят с time limit, ползвам matrix[][] и цикли..
Поздрави,
Според мен е възможно в някои от тестовете да подават много големи стойности за разбъркване ,например даден ред от 3 елемента да се разбърка 2000000000 пъти (1 left 2000000000). Идеята е тези два милиарда да се редуцират до максимум бройката елементи на съответния ред в случая 3. Ето моето решение надявам се да помогне https://pastebin.com/vXcpsd0q
Дай си решението да го погледнем. Възможно е проблема да не идва точно от структурите от данни, които ползваш.
Тази задача на мен ми излезе, използвайки int[][] matrix.
Решението ми е много далеч от оптималното, но ако те интересува :
https://github.com/Pilgrimage/CSharp-Advanced-2017.05/blob/master/Ch03_Matrices/p05_RubiksMatrix/RubiksMatrix.cs
Решението с матрица би трябвало да мине. Пусни кода да видим, може да е в циклите нещо проблема.
https://pastebin.com/1T0AtD2g
според мен гърми на up или down, сортирането е подобно на това от упражненията...
само един от тестовете не минава...
Евала, колега, че ми напомни за този хак! Спомням си същата уловка, където можеше да върти цикъл 1милиард пъти как го съкращавахме с % от дължината на колекцията! Тази задача ме стресна с количеството време, което ми отне да напиша всичко! Беше най-дългата ми не-изпитна задача! Погледнах твоя код за сверка и видях, че като пълниш работната матрица, можеш успоредно да напълниш и blueprint,вместо 2 пъти да въртиш същия цикъл:
bluePrint[i, j] = number++;
Пък аз взех от теб, това че принтираш Swap съобщението в самата функция Equalize...., която е тип воид. Аз малко тъпо го направих да ми връща стринг ...смях :) https://pastebin.com/LR3ASGfm