AKB Forums

Go Back   AKB Forums > Technical sections > Algorithms
Home Register Blogs FAQ Members List Calendar Downloads Arcade Mark Forums Read

Algorithms The source of algorithms for your project

Troubles when posting message? Click here! :: Проблемы с отправлением сообщения? Нажмите сюда!

Reply
 
LinkBack Thread Tools Display Modes
Old Sep 20, 2002, 13:07  
Грустно...
 
Agregat's Avatar
 
Join Date: Aug 2002
Location: Там, где всегда идут дожди
Posts: 21,386
Rep Power: 10
Reputation: 125
Send a message via ICQ to Agregat Send a message via MSN to Agregat
Smile Попробуйте решить интересную задачу...

Итак предположим мы собираем данные в условиях жесткого аппаратного недостатка.
У нас есть буффер содержащий 978 чисел (каждое занимает 2 байта и уникально), все из которых находятся в диапазоне от 0 до 1500.
Так же предположим, что буффер устроен так: после прочтения - данные в нем стираются.
Надо написать алгоритм для устройства, которое прочтет эти данные и отсортирует их. У устройства есть одно ограничение - буффер данных всего - лишь 197 байтов. Программа - будет прошита в пзу и ей озу не надо.
Итак:
1. Нужно прочесть 978 чисел (при том, что это возможно всего лишь однажды. Читаются они, кстати, последовательно, как в файле) в диапазоне [0, 1500].
2. Отсортировать их в памяти размер которой 197 байтов.
3. записать обратно в буффер в нужном порядке, что бы следующее устройство провело статистический анализ (for example).

Жду решений .
__________________
Хотели, как лучше, а получилось даже хуже...
Лозунг шахматиста: На каждый шах - ответим матом!
В сумасшедшем доме каждый мог говорить все, что взбредет ему в голову, словно в парламенте.
Я. Гашек. "Приключения Бравого Солдата Швейка". Часть 1. Глава IV. Абзац 2.
Agregat is offline   Reply With Quote Quote selected
Old Sep 24, 2002, 11:43   #16
Академик
 
Join Date: Aug 2002
Location: Yerevan, Armenia
Posts: 4,443
Rep Power: 6
Reputation: 41
Send a message via ICQ to W_z_rd
Post

Quote:
Originally posted by Dark Abyss of Yerevan:
Значит так. В цикле крутим числа i от 0 до 27 (9+9+9),
и для каждого i подсчитываем t - число разбиений числа
i ( a+b+c == i/ a,b,c IN [0..9]). Ясно что количество
счастливых билетов с суммой первых (или последних) трех
чисел == i равно t*t (t^2). Там конечно используется оператор
сравнения, но насколько я понял ограничение поставлено для того
чтобы не допустить тупого перебора и сравнения левой части с
правой. Думаю что в данном случае все ок. В крайнем случае
можно изменить процедуру нахождения количества разбиений.

Code:
  #include <stdio.h>


void main(){
int i,i1,i2,i3,t;
long total;

total=0;
for (i=0;i<=27;i++){

	t=0;

	/* найти количество разбиений числа i */
	for (i1=0;(i1<=i)&&(i1<=9);i1++)
		for (i2=0;(i-i1<=18)&&(i1+i2<=i)&&(i2<=9);i2++)
			if (i-i1-i2<=9)t++;

	total+=t*t;
//	printf(&quot;i=%d, t=%d&quot;,i,t);

};

	printf(&quot;\ntotal=%d&quot;,total);




}
Ochen` nedurno, ideya pravil`naya, realizaciyu mozhno poluchshe sdelat`. Esli primenit` massiv, to mozhno povisit` evvektivnost` ~1.5 raza i izbavit`sya ot operatora sravneniya voobshe. V obshem, molodec.
__________________
Stuck between heaven and hell; dunno where to go...
W_z_rd is offline   Reply With Quote Quote selected
Old Sep 24, 2002, 14:33   #17
Младенец
 
Join Date: Sep 2002
Location: ?????????
Posts: 13
Rep Power: 0
Reputation: 10
Post

Code:
 Abiss - i lucum@ sxal che, bajc kareli !
 najev ajspes: Vercnenq massiv 3 erkarutjamb(vor@ algoritmi
 ashxatanqi skzbum amboxjovin zro !)
 ev 9 erkarutjamb Numbercount massiv = 0:Im algoritmum ogtagorcvelu !
 nujn algoritm@ inch vor abiss - algoritmum,
 bajc == - @ yndhanrapes chi ogtagorcvelu:Massivi verjin elementin kavelacnenq 1, 
kpahenq @nt acik popoxakan ` count vor@ nujnpes kavelacnenq 1 - ov,
 Numbercount[count - 1]++:Erb vor verjin element@ kdarna 9 ev nran kavelacnenq
 1 apa inchpes sovorakan gumarman
 depqum` naxaverjin element@ kavelana 
1 - ov, isk verjin kzrojacnenq, ajd
 @ntacqum count - @` count - 9 + 1, 
ev Numbercount[count - 1]++: Verjum parzapes`

int total = 0; 
For(int i = 0; i < 9; i++)   
total += (Numbercount[i])^ 2;

total - @ mer patasxann !:&quot;
Rainman is offline   Reply With Quote Quote selected
Old Sep 25, 2002, 11:07   #18
Дошкольник
 
Dark Abyss of Yerevan's Avatar
 
Join Date: Jan 2002
Location: hell
Posts: 124
Rep Power: 7
Reputation: 10
Send a message via ICQ to Dark Abyss of Yerevan
Post

Ну что же, решите и вы задачку
Дано множество 1,2,..,3n натуральных чисел и какие нибудь 3 непересекающиеся подмножества этого множества по n чисел в каждом. Требуется со всей математической строгостью доказать, что можно
выбрать по одному числу из каждого множества так, чтобы одно число из выбранных равнялась сумме двух других.

P.S.
Я и сам не знаю решения. Задачка эта из учебника 'Тоноян. Комбинаторные Алгоритмы', No4.
__________________
[x]-=-[ ]-=-[x]
Dark Abyss of Yerevan is offline   Reply With Quote Quote selected
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On



All times are GMT. The time now is 21:47.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
This board was founded on September 29, 2001
Powered by Viper Internet

Affordable Web Hosting | ParevNet

Buy text link