Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вопрос только для Мастеров/прикладных программистов. [D1, D2, D3, D4, D5, D6, D7, Win95/98]


Страницы:   1 2

Evgeniy K ©   (2003-01-19 14:50:00) 

Вопросик не для глупых.

Предпложим у меня есть матрица n*n, где n<251
Матрица заполнена числами.
1 3 4 10 15 ..
2 5 9 14 ..
4 8 13 ..
7 12 ..
11 ..

и т.д.
Мне дано какое-то число k. Как мне найти "координаты" этого числа в таблице?
Желательно чтобы на проверку 250^2 (250*250) чисел (k) уходило не более 1 сек.
Заранее все спасибо, кто хоть чем-то поможет.

PS Перебирать все числа нет смысла - времени не хватит, а как проще пока не догадался, поэтому и прошу вашей помощи, Мастера.
PSS Может формулу кто-нибудь знает?


Sha   (2003-01-19 22:14:00) [21]

> gsu © (19.01.03 19:29)
> но благодаря супер учителям (подготовка) и опосля, реализациям
> всяких мат. методов меня рекурсия начала радовать

даже по нескольким переменным идет без напряга?


gsu   (2003-01-19 19:29:00) [22]

>> приходится как-то непроизвольно собираться
Может, и у мя раньше такое было, но благодаря супер учителям (подготовка) и опосля, реализациям всяких мат. методов меня рекурсия начала радовать. Только думать надо и не везде применимо, зато какие изящные решения.


Sha   (2003-01-19 18:52:00) [23]

> gsu © (19.01.03 18:40)
> Что может быть проще рукурсии ? (-:|~

Не лукавишь? Для меня цикл намного проще. Когда в задаче встречается рекурсия приходится как-то непроизвольно собираться. Затянувшееся последействие института. :(


gsu   (2003-01-19 18:42:00) [24]

>> Хочу с Мастерами говорить.
типа, у мя проездной (-:|~


gsu   (2003-01-19 18:40:00) [25]

Что может быть проще рукурсии ? (-:|~
Говорят, что все создано из пяти основных эл-тов и рекурсии, н-р, у человека 5 пальцев, 5 ...
Но я в этом не уверен, так как не создатель (-:|~


Sha   (2003-01-19 18:24:00) [26]

2 Mystic © (19.01.03 17:08)

Извини, у нас совпало :)


Sha   (2003-01-19 18:19:00) [27]

2 MBo © (19.01.03 17:17)
2 gsu © (19.01.03 18:00)

есть способ проще:

procedure TForm1.Button2Click(Sender: TObject);
var
k, n, m: integer;
begin;
k:=14;
n:=0; m:=0;
repeat;
inc(n); inc(m,n);
until m>=k;
m:=m-k+1;
n:=n-m+1;
ShowMessage(Format("%d находится в строке %d колонке %d",[k,m,n]));
end;



2 Evgeniy K (19.01.03 14:50)
А вообще-то нехорошо начинать ветку так Вопрос только для Мастеров.
Остальным типа не соваться в мою ветку. Хочу с Мастерами говорить.


gsu   (2003-01-19 18:01:00) [28]

И причем здесь глупость ?
Глупых не бывает, бывают ленивые и/или упертые


gsu   (2003-01-19 18:00:00) [29]

Забежал на сек, интересно !
Вот, те прикладная рекурсия (-:|~
x ={0,n} - столбцы
y={0,n} - строки
diag(0)=1
diag(m)=diag(m-1)+m, m={1..n-1}
pair(x,y)=diag(x+y)+y
Вот и все, например: pair(1,2)=diag(3)+2=9


MBo   (2003-01-19 17:17:00) [30]

j:=1;
while a[1,j]<k do
inc(j);
i:=j-(a[1,j]-k);

i,j - строка, столбец.


Mystic   (2003-01-19 17:08:00) [31]

Наверняка не самое оптимальное, но работает быстрее 1 мин ;)

I := 2;
Step := 2;
while I <= N do
begin
I := I + Step;
Step := Step + 1;
end;
X := N + Step - I;
Y := Step - X;


Sha   (2003-01-19 17:05:00) [32]

> Evgeniy K (19.01.03 14:50)
> Вопросик не для глупых.

Начал неправильно. Сам-то к каким относишься?
Если не глуп, то легко найдешь ответ.


Reindeer Moss Eater   (2003-01-19 16:25:00) [33]

Матрица заполнена по тому же принципу, что в исходном сообщении или произвольно?
Да никакой разницы нет, как она на самом деле заполнена.
Важнее то, как её элементы расположены в памяти. Непрерывным блоком или нет. Если непрерывным, то перебора элементов по индексам можно избежать.


NailS   (2003-01-19 16:19:00) [34]

Матрица заполнена по тому же принципу, что в исходном сообщении или произвольно?


Романов Р.В.   (2003-01-19 15:13:00) [35]

Если твоя программа впервые видит эту матрицу то придется перебирать все элементы.
Если есть время на подготовку перед операцией поиска, то отсортируй элементы, но в этом случае потребуется дополнительные ресурсы для хранения координат чисел в матрице.


Reindeer Moss Eater   (2003-01-19 14:53:00) [36]

С помощью чего реализована матрица?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо