Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 09:30 05.07.25 
Компютри и Интернет
   >> Програмисти
*Кратък преглед

Страници по тази тема: 1 | 2 | 3 | (покажи всички)
Тема n!нови  
Автор Sargon lll ()
Публикувано25.09.08 09:05



Имам масив с n елемента. Дайте идея за рационален цикъл на разместване на тези елементи в масива така, че да се постигнат n! подреждания. Предполагам, че има нещо стандартно, но понеже не съм професионалист, не го знам. Вероятно някакъв по-засукан цикъл и една-две буферни променливи са достатъчни, обаче не знам как става.



Тема Re: n!нови [re: Sargon lll]  
Авторmono (Нерегистриран)
Публикувано25.09.08 09:52



Виж това


Но "Рационален Цикъл" и "Засукан" такъв не знам какво е...



Тема Re: n!нови [re: Sargon lll]  
Автор Om_ ()
Публикувано25.09.08 13:03



Ето ти една идея, не е от най-засуканите, но каточели работи, дано да съм те разбрала правилно:


template <typename T>
void outArray(unsigned int count, T* array, T* &out_array){
for(unsigned int k = 0; k < count; k++)
*(out_array+k) = array[k];
out_array = out_array + count;
}
template <typename T>
void permutation(unsigned int count, T* in_array, T* &out_array, unsigned int initial_count= 0){
if(count > initial_count)
initial_count = count;
if(count == 1){
outArray<T>(initial_count, in_array - initial_count + 1, out_array);
return ;
}
for(unsigned int k = 0; k< count; k++){
T hlp = in_array[0];
in_array[0] = in_array[k];
in_array[k] = hlp;
permutation(count-1, in_array+1, out_array, initial_count);
in_array[k] = in_array[0];
in_array[0] = hlp;
}
}
unsigned P(unsigned int num){
unsigned int res = num;
while(--num)
res*= num;
return res;
}
int _tmain(int argc, _TCHAR* argv[])
{
const unsigned int count = 4;
unsigned int out_count = P(count) * count;
int arro[] = {1, 2, 3, 4};
int* const out_arro = new int[out_count];
int* out = out_arro;
permutation<int>(count, arro, out);
while(out_count--){
printf("%d ", out_arro[out_count]);
if(out_count%count == 0)
printf("\n");
}
delete[] out_arro;
system("pause");
return 0;
}

Редактирано от Om_ на 25.09.08 15:56.



Тема Re: n!нови [re: Om_]  
АвторПeтъp Пeтpoв (Нерегистриран)
Публикувано25.09.08 14:41



Пусни кода пак, но този път в [ \pre ] тагове и освен това не ползвай i за индекс на масив, защото [\i] прави текста италик. Ползвай k или j.



Тема OK [re: Пeтъp Пeтpoв]  
Автор Om_ ()
Публикувано25.09.08 14:48




void printArray(unsigned int count, int* array){
for(int k = 0; k < count; k++)
printf("%d, ", *(array+k));
printf("\n");
}
void permutation(unsigned int count, int* array, unsigned int initial_count=0){
if(count == 1){
printArray(initial_count, array - initial_count + 1);
return ;
}
if(count > initial_count)
initial_count = count;
for(unsigned int k = 0; k< count; k++){
int hlp = array[0];
array[0] = array[k];
array[k] = hlp;
permutation(count-1, array+1, initial_count);
array[k] = array[0];
array[0] = hlp;
}
}
int _tmain(int argc, _TCHAR* argv[]){
int arro[] = {1, 2, 3, 4};
permutation(4, arro);
system("pause");
return 0;
}

Редактирано от Om_ на 25.09.08 15:02.



Тема Re: OKнови [re: Om_]  
Автор Pekoнcтpykтop (дарвинист)
Публикувано25.09.08 15:08



Кой ви е учил да слагате отварящите фигурни скоби на същия ред???





Тема Re: n!нови [re: Sargon lll]  
Автор Colombino (програмист)
Публикувано25.09.08 15:08



Ма трябва ти като сорс, или да си свършиш работа? Щото ако е второто и пишеш на C++ може да ползваш STL - има функция std::next_permutation в <algoithm>

System Doctor Error:
Your girlfriend is pregnant.
(A)bort, (M)arry, (I)gnore?_


Тема Re: OKнови [re: Pekoнcтpykтop]  
АвторПeтъp Пeтpoв (Нерегистриран)
Публикувано25.09.08 15:11



Правилно се слагат на същия ред. Аз като видя някой код където са на нов ред и ходя ги връщам на предния ред. А ако на някой му трябва да раздухва кода, защото брои колко линии код е *написал* да намери друг начин магарето с магаре.



Тема Re: OKнови [re: Пeтъp Пeтpoв]  
Автор Pekoнcтpykтop (дарвинист)
Публикувано25.09.08 15:20



Кода става около шеснайсе хиляди пъти по-нечетим. За тая глупост трябва да бесят по дърветата в парка.



Тема Re: OKнови [re: Pekoнcтpykтop]  
АвторПeтъp Пeтpoв (Нерегистриран)
Публикувано25.09.08 15:23



Глупости, няма нищо общо с четимостта. А дърветата в парка са заети, там висят обесените Jаvа програмисти.




Страници по тази тема: 1 | 2 | 3 | (покажи всички)
*Кратък преглед
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2025 Dir.bg Всички права запазени.