![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Nov 2009
Адрес: 59°57′ с. ш. 30°19′ в. д.
Сообщений: 17
|
-De-, iNils, спасибо за помощь
![]() Остановился пока на таком варианте, надо будет доработать потом... var my_length:int = 2500; // 25 м var cut_Ar:Array = [102,110,120,125,127,131,137,143,161,176,199,200,250,256,277,300,321,349,351,380,385,387,390]; var index_Array:Array = []; // массив с индексами нужных длин в массиве cut_Ar var ind:int = cut_Ar.length-1; var limit:int = 10; // допуск function rundown():void { var max_cutAr:int = cut_Ar[ind]; var min_numPipe:uint = Math.ceil(my_length/max_cutAr); // минимальное количество труб for (var j:int = ind; j>=0; j--) { if (min_numPipe<=ind) { var long:int = cut_Ar[j]; var long_minus:int = cut_Ar[j-1]; if (long<my_length+limit) { my_length-=long; index_Array.unshift(j); } if (my_length<=limit && my_length>=-limit) { trace("метраж: " + Number(2500-my_length)) for (var q:int=0; q<index_Array.length; q++) { trace(cut_Ar[index_Array[q]]) } //break; } if (my_length<long_minus-limit) { my_length+=long; index_Array.splice(0,1); } if (my_length<=limit && my_length>=-limit) { trace("метраж: " + Number(2500-my_length)) for (var q2:int=0; q2<index_Array.length; q2++) { trace(cut_Ar[index_Array[q2]]) } //break; } if (j==0) { index_Array = []; my_length = 2500; ind--; rundown(); } } else { break; } } } rundown(); могу написать, только сайт мягко говоря убогенький |
|
|||||
|
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
ужасные наименования. глаза ломает.
вы уж определитись со стилем..
__________________
Отряд Котовскага |
|
|||||
|
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
Не интересно с допуском!
Вот, раз уж я накидал, чтоб посмотреть, за сколько же оно считает, мож пригодится. public var C:Array = [102, 120, 125, 127, 131, 133, 139, 143, 160, 177, 199, 250, 256, 277, 321, 349, 351, 385, 387, 390]; public var sum:int = 100009; public var A:Array; private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); A = new Array(sum + 1); A[0] = 0; C.sort(2);//сортируем по убыванию, чтоб самые длинные трубы использовались чаще всего for (var i:int = 0; i < C.length; ++i) { for (var j:int = 0; j <= sum - C[i]; ++j) { if (A[j] != null && A[j + C[i]] == null) { A[j + C[i]] = C[i]; if (j + C[i] == sum) { printTubes(); return; } } } } trace("not found"); } private function printTubes():void { var count:int = 0; for (var i:int = sum; i > 0; i -= A[i]) { count += A[i]; trace("труба длиной "+A[i]+" метраж "+count); } A = null; //trace(count); } |
![]() |
![]() |
Часовой пояс GMT +4, время: 06:32. |
|
|
« Предыдущая тема | Следующая тема » |
|
|