![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Dec 2010
Сообщений: 177
|
Здравствуйте!
Подскажите, пожалуйста, алгоритм, код. Задача: Есть множество массивов с различной длинной. Необходимо исключить элемент из массива, который имеет наибольшую длинну. На следующем шаге действие повторяется. И так до тех пор, пока длинна всех массивов не станет равной нулю. Тобишь необходимо выбрать все элементы множества массивов. |
|
|||||
|
Регистрация: Jun 2011
Сообщений: 212
|
1. В actionscript нет языковой конструкции "множество". Что вы имеете ввиду? многомерный массив?
2. ну а сами-то что-то пробовали написать? |
|
|||||
|
Banned
[+1 05.11.11]
[+1 09.08.11] Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
Для начала я б затолкал все эти массивы в другой массив, для упрощения задачи. Потом отсортировал бы их по длине, например так:
var firstArray:Array = [3, 4, 4, 5, 5, 5, 4, 4, 7]; var secondArray:Array = [3, 6, 4, 5]; var thirdArray:Array = [4, 6, 7, 8, 9, 10]; var allArrays:Array = []; allArrays.push(firstArray, secondArray, thirdArray); allArrays.sortOn("length", Array.NUMERIC | Array.DESCENDING); // сортируем, ставя самый длинный массив на первое место while (firstArray.length + secondArray.length + thirdArray.length != 0) { for (var i:int = 0; i < allArrays.length; i++) { if (allArrays[i].length - 1 > 0) { // если длина текущего массива, минус один элемент больше нуля, срубаем последний элемент allArrays[i].pop(); } else continue; // если == 0, продолжаем цикл } } П.с. хз как будет работать, тестировать было в лом )) так что код - чистая импровизация, я б даже сказал, частично *****код ) Если подумать, то можно найти более интересное решение Последний раз редактировалось goodguy; 07.10.2011 в 15:04. |
|
|||||
|
Регистрация: Dec 2010
Сообщений: 177
|
goodguy, решение вполне очевидное: отсортировать перечень массивов по длинне и отбирать всегда из первого массива. А в чём Вы видите проблему?
За подсказку спасибо! |
|
|||||
|
Цитата:
Добавлено через 3 минуты var firstArray:Array = [3, 4, 4, 5, 5, 5, 4, 4, 7]; var secondArray:Array = [3, 6, 4, 5]; var thirdArray:Array = [4, 6, 7, 8, 9, 10]; var allArrays:Array = [firstArray, secondArray, thirdArray]; while(true) { allArrays.sortOn("length", Array.NUMERIC | Array.DESCENDING); // сортируем, ставя самый длинный массив на первое место if(allArrays[0].length==0) break; else trace(allArrays[0].pop()); }
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку. Последний раз редактировалось GBee; 07.10.2011 в 15:17. |
|
|||||
|
Banned
[+1 05.11.11]
[+1 09.08.11] Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
Цитата:
Тут можно просто переключаться на следующий массив, когда первый пуст, и исключать пустой из списка проверки. Цитата:
![]() |
|
|||||
|
а вот так не пойдет?
var myMassiv: Array = new Array(); var maxLenght:Number; //максимальная длина массива из множества массивов var idArray: Number = 0; //номер массива с максимальной длиной на данном шаге //записываете свои массивы в MyMassiv любым способом ..... // while(maxLenght > 0) { for(var i:int = 0; i < myMassiv.lenght; i++ ) { if (maxLenght < myMassiv[i].lenght) { maxLenght = myMassiv[i].lenght; idArray = i; } } ........//делаете, что надо с каким Вам нужно элементом массива с максимальной длинной //это будет массив myMassiv[idArray] }
__________________
Нельзя передать сложность, а только знание о ней. Последний раз редактировалось Tasmanec; 07.10.2011 в 17:04. |
|
|||||
|
Цитата:
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку. |
|
|||||
|
Регистрация: Dec 2010
Сообщений: 177
|
goodguy, спасибо, что подкинул идею. GBee, Вам большое спасибо за реализацию!
Tasmanec, интересное решение в плане неочевидности реализации. Кто-нибудь владеет навыком быстрого тестирования быстродействия кода? Какой метод оптимальней? Последний раз редактировалось zorexundra; 07.10.2011 в 16:20. |
![]() |
![]() |
Часовой пояс GMT +4, время: 01:45. |
|
|
« Предыдущая тема | Следующая тема » |
|
|