| imho.ws |
![]() |
|
|
|
# 21 |
|
::VIP::
Звезда первого сезона Молчун-2004 Регистрация: 24.08.2002
Сообщения: 1 575
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
a_ber
Ну дык, иди по списку, запоминай адреса, по которым прошел, и проверяй наличие очередного адреса в списке запомненных. Если найдешь повторяющийся, значит нашел начало петли. Признаю, алгоритм - дубовый, но сработает. ![]() Может многие помнят по школе такую задачу: даны три натуральных числа - n, m и k. Необходимо найти k-ую цифру после запятой в десятичной дроби n/m. Я тут усложнил задачу и дал ее на недавно прошедшей в нашем ВУЗе олимпиаде - ни одна собака не решила. Короче, необходимо представить n/m в виде десятичной дроби с периодом (если есть). Например, 3/5=1.5, 1/30=0.0(3). Кто смогет?
__________________
Действовать надо тупо и это лучшее доказательство нашей чистоты и силы! |
|
|
|
|
# 22 |
|
Добрый фей-мод
Регистрация: 18.09.2002
Адрес: Израиль
Пол: Male
Сообщения: 4 155
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Ghost
Ошибка. Надо превратить в queue. Шапку исправил.
__________________
Фотолюбительщина Пока слова не сказаны - ничего нет. Но если они сказаны, даже то чего нет становится реальностью. |
|
|
|
|
# 23 |
|
Добрый фей-мод
Регистрация: 18.09.2002
Адрес: Израиль
Пол: Male
Сообщения: 4 155
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Ghost
Гы приколист. Твоё решение не эффективное. Если бы ты так ответил на интервью - хрен бы тебя взяли на работу.
__________________
Фотолюбительщина Пока слова не сказаны - ничего нет. Но если они сказаны, даже то чего нет становится реальностью. |
|
|
|
|
# 24 |
|
::VIP::
Регистрация: 11.06.2003
Адрес: Там...
Сообщения: 236
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Ghost
Решение задачи: Код:
function MM(m1,m2:integer):string;
var
i,k,l:integer;
s,m,b,d,dudu:string;
ok:boolean;
begin
s:=FloatToStr(m1/m2);
if pos(',',s)<=0 then
begin
Result:=s;
exit;
end;
b:=copy(s,1,pos(',',s)-1);
delete(s,1,pos(',',s));
for i:=1 to Length(s) do
begin
for k:=1 to Length(s)-i do
begin
m:='';
d:=s;
delete(d,1,i-1);
m:=copy(s,i,k);
delete(d,1,Length(m));
if pos(m,d)>0 then
begin
ok:=true;
delete(d,(length(d) div Length(m))*Length(m),length(d));
for l:=1 to (length(d) div Length(m)) do
begin
dudu:=copy(d,(l*Length(m))-(Length(m)-1),Length(m));
if (Length(m)<=Length(d)-l*Length(m)) and (dudu<>m) then
begin
ok:=false;
break;
end;
end;
if ok then
begin
Result:=b+','+copy(s,1,i-1)+'('+m+')';
exit;
end;
end;
end;
end;
end;
В каком ты там вузе? |
|
|
|
|
# 25 |
|
Member
Регистрация: 24.03.2003
Сообщения: 300
![]() ![]() ![]() ![]() ![]() ![]() |
a_ber
Pomoemy , esli vziat' dva ykazatelia i pustit' po spisky ... tol'ko odin (1) na sled. element a drygoy (2) cherez element, i proveriat' ih addresa ... esli odin iz ykazateley popal na Null znachit spisok ne zamknytiy , a esli addresa sovpali znachit est' petlia ... t.e. ykazatel' (2) "dogonit" ykazatel' (1) na listike vrode rabotaet ...
__________________
0 Вы в интернете 1 Вы на сайте http://www.imho.ws 2 Вы читаете это 4 Вы не заметили отсутствия пункта 3 5 Вы это проверили 6 Вы улыбаетесь |
|
|
|
|
# 26 |
|
Добрый фей-мод
Регистрация: 18.09.2002
Адрес: Израиль
Пол: Male
Сообщения: 4 155
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Ghost
А рекурсией слабо лист развернуть ? gigi Код:
Node *ReverseList(Node *current, Node *parent)
{
Node *temp;
if(current == null)
temp= parent;
else
{
temp = ReverseList(current->next, current);
current->next = parent;
}
return temp;
}
Вызываем:
NewTail = ReverseList(tail, NULL);
__________________
Фотолюбительщина Пока слова не сказаны - ничего нет. Но если они сказаны, даже то чего нет становится реальностью. |
|
|
|
|
# 27 | |||
|
::VIP::
Звезда первого сезона Молчун-2004 Регистрация: 24.08.2002
Сообщения: 1 575
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Programmer
Цитата:
![]() f00rd Цитата:
Оригинальное решение, но можно проще: Код:
uses
crt;
var
n, m, p, k: byte;
s, d: string;
begin
repeat
clrscr;
write ('n = '); readln (n);
repeat
write ('m = '); readln (m);
if m = 0 then writeln ('error: m = 0!');
until m > 0;
k := n mod m;
s := '';
d := '';
p := 255;
while (p >= length(s)) and (k <> 0) do
if pos(chr(k), d) <> 0 then begin
p := pos(chr(k), d);
s := Copy(s,1,p-1) + '(' + Copy(s,p,length(s)) + ')';
end
else begin
s := s + chr (48 + ((10 * k) div m));
d := d + chr (k);
k := (10 * k) mod m;
end;
writeln ('n/m = ' , n div m, ',',s);
writeln ('press ESC for exit..');
until readkey = #27;
end.
Цитата:
![]() А слабо выполнить эту же задачу в Прологе?
__________________
Действовать надо тупо и это лучшее доказательство нашей чистоты и силы! |
|||
|
|
|
|
# 28 |
|
Member
Регистрация: 10.03.2002
Адрес: Israel
Сообщения: 245
![]() ![]() |
2Programmer
Вполне можно обойтись одним параметром: Код:
Node *ReverseList(Node *current)
{
Node *temp;
if(current->next==NULL)
temp= current;
else
{
temp = ReverseList(current->next);
current->next->next=current;
current->next=NULL;
}
return temp;
}
__________________
Best Regards |
|
|
|
|
# 29 |
|
Добрый фей-мод
Регистрация: 18.09.2002
Адрес: Израиль
Пол: Male
Сообщения: 4 155
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
BRULIK
Ghost Уважаемые сэры. Ваше решение по поводу петли неправильное. Дан лист: a->b->c->d->e и петля e->b начало: p1 = a, p2 = c шаги: 1. p1 = b, p2 = d 2. p1 = c, p2 = e 3. p1 = d, p2 = b 4. p1 = e, p2 = c 5. p1 = b, p2 = d Видно, что уже на 5-ом шаге мы приходим в ситуацию 2-го шага. И так далее. Да и посудите сами. С чего им догонять друг друга, если двигаются они с одинаковой скоростью. Расстояние между ними будет сохраняться.
__________________
Фотолюбительщина Пока слова не сказаны - ничего нет. Но если они сказаны, даже то чего нет становится реальностью. |
|
|
|
|
# 30 |
|
Добрый фей-мод
Регистрация: 18.09.2002
Адрес: Израиль
Пол: Male
Сообщения: 4 155
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
BRULIK
Ghost Весь прикол в том что они должны двигаться с разными скоростями. Чего вы в вашем решении не указали ![]() Код:
Node* p1 = tail, *p2 = tail;
bool bLoop = false;
while ( p1 != NULL && p2 != NULL )
{
p1 = p1->next;
p2 = (p2->next != NULL) ? p2->next->next : NULL;
if ( (bLoop = (p1==p2)) )
break;
}
1. p1 = b, p2 = c 2. p1 = c, p2 = e 3. p1 = d, p2 = c 4. p1 = e, p2 = e --> FINISH
__________________
Фотолюбительщина Пока слова не сказаны - ничего нет. Но если они сказаны, даже то чего нет становится реальностью. |
|
|
|
|
# 32 |
|
Добрый фей-мод
Регистрация: 18.09.2002
Адрес: Израиль
Пол: Male
Сообщения: 4 155
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
brulik
Та как ты написал, не понятно, к чему относится "через один". К начальной позиции или к скорости.
__________________
Фотолюбительщина Пока слова не сказаны - ничего нет. Но если они сказаны, даже то чего нет становится реальностью. |
|
|
|
|
# 33 |
|
Advanced Member
Регистрация: 09.03.2004
Адрес: толстозадая Москва
Сообщения: 498
![]() ![]() ![]() ![]() |
ребяты...
первую на асме не проробовали??push & pop ка раз меняет местами значения ... остальные - АСМ форева! нефиг пугать... если сообразительность заключается только в этом... по-моему ребята дали развернутые ответы... |
|
|
|
|
# 34 |
|
Добрый фей-мод
Регистрация: 18.09.2002
Адрес: Израиль
Пол: Male
Сообщения: 4 155
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
/7y3uK
Если честно, из твоего поста мало что понял. Что ты хотел сказать? 2 All Осталась 3-я задача (см. шапку). Если никто не решает, даю решение завтра.
__________________
Фотолюбительщина Пока слова не сказаны - ничего нет. Но если они сказаны, даже то чего нет становится реальностью. |
|
|
|
|
# 35 |
|
Newbie
Регистрация: 25.11.2003
Адрес: Near monitor
Сообщения: 49
![]() |
По поводу задачи о петле:
а) Начало правильное, но я еще не видел где координата за линейное время? б) Гост: линейной дополнительной памяти никто не давал ![]() Мне (и не тол'ко мне) нравится этот паттерн: 2 пойнтера движушиеся с разной скоростью --- он иногда красиво применим в разных задачах, помню что были, но не помню деталей... в) Есть еще одно решение этой части задачи... кто найдет? |
|
|
|
|
# 36 | |
|
Full Member
Регистрация: 19.07.2003
Адрес: Israel
Сообщения: 924
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
берётся две интовые переменные (first_elem,first_empty). Одна указывает на первое занятое место в векторе, вторая на первое незанятое. Вначале обе указывают на 0. Также нужен флаг который говорит очередь пустая или полная, так как эти состояния рваны, с точки зрения указателей(first_elem == first_empty). Добавление элемента: Код:
if (queue_full == false)
{
arr[first_empty] = elem;
first_empty=(first_empty+1) % arr_size.;
if (first_empty == first_elem)
queue_full = true;
}
else
return QUEUE_FULL_ERROR
Код:
if (queue_full == true || first_empty != first_elem)
{
elem = arr[first_elem];
first_elem=(first_elem+1) % arr_size.;
queue_full = false;
}
else
return QUEUE_EMPTY_ERROR
first_elem = first_empty = 0; queue_full = false;
__________________
Столько дел, что и работой занятся некогда... |
|
|
|
|
|
# 37 | ||
|
Добрый фей-мод
Регистрация: 18.09.2002
Адрес: Израиль
Пол: Male
Сообщения: 4 155
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
joker99
Ну скажем не совсем так. Вторая функция у тебя не правильна. Во-первых когда ты Цитата:
Цитата:
Вот правильная имплементация dequeue(): Я держу переменные head (продвигается вправо когда элемент достаётся), tail (продвигается вправо когда елемент кладут в очередь) и count (для контроля над количеством элементов). Код:
Object dequeue()
{
if ( count == 0 )
throw new Exception("Queue is empty");
Object result = array[head];
array[head] = null;
head = ++head % array.length;
count--;
return result;
}
__________________
Фотолюбительщина Пока слова не сказаны - ничего нет. Но если они сказаны, даже то чего нет становится реальностью. |
||
|
|
|
|
# 38 | |||
|
Full Member
Регистрация: 19.07.2003
Адрес: Israel
Сообщения: 924
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
Цитата:
Цитата:
Ну неподумал я использовать простой счётчик, а так мой алгоритм работает.
__________________
Столько дел, что и работой занятся некогда... |
|||
|
|
|
|
# 39 | ||
|
Добрый фей-мод
Регистрация: 18.09.2002
Адрес: Израиль
Пол: Male
Сообщения: 4 155
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
Цитата:
__________________
Фотолюбительщина Пока слова не сказаны - ничего нет. Но если они сказаны, даже то чего нет становится реальностью. |
||
|
|
|
|
# 40 | |
|
Full Member
Регистрация: 19.07.2003
Адрес: Israel
Сообщения: 924
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
Тем более если елемент это не объект а value-type, то неизветно чем заполнят пустое место.
__________________
Столько дел, что и работой занятся некогда... |
|
|
|