imho.ws |
![]() |
![]() |
![]() |
# 41 |
Добрый фей-мод
Регистрация: 18.09.2002
Адрес: Израиль
Пол: Male
Сообщения: 4 155
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
joker99
Убрать его физически тебе придётся для освобождения места. Для этого тебе и надо 2 указателя. Ты относишся к массиву как кругу, по которому бегают 2 указателя. Т.е. такая ситуация: Код:
--4768 H T на нулевой индекс (под первой -). Туда и попадёт новый объект.
__________________
Фотолюбительщина Пока слова не сказаны - ничего нет. Но если они сказаны, даже то чего нет становится реальностью. Последний раз редактировалось Programmer; 03.05.2004 в 16:00. |
![]() |
![]() |
# 42 |
Full Member
Регистрация: 19.07.2003
Адрес: Israel
Сообщения: 924
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Да, ситуация совершенно законна, но в моём способе это бы выглядело так
Код:
234768 H T на нулевой индекс (под 2). Туда и попадёт новый объект.
__________________
Столько дел, что и работой занятся некогда... |
![]() |
![]() |
# 43 |
Добрый фей-мод
Регистрация: 18.09.2002
Адрес: Израиль
Пол: Male
Сообщения: 4 155
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
joker99
Во-во и если ты пишешь на С++, то у тебя memory leak. Иначе тебе придётся удалить объект, как я и сказал: Код:
delete array[head]; array[head] = null;
__________________
Фотолюбительщина Пока слова не сказаны - ничего нет. Но если они сказаны, даже то чего нет становится реальностью. |
![]() |
![]() |
# 44 |
Добрый фей-мод
Регистрация: 18.09.2002
Адрес: Израиль
Пол: Male
Сообщения: 4 155
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
2 All
Для тех кто решил задачу с петлёй у связного списка. Усложняю задачу. Теперь, после того как один указатель догнал другой, найдите начало петли. Напоминаю, что указатель на Head очереди у вас сохранён.
__________________
Фотолюбительщина Пока слова не сказаны - ничего нет. Но если они сказаны, даже то чего нет становится реальностью. |
![]() |
![]() |
# 45 |
Добрый фей-мод
Регистрация: 18.09.2002
Адрес: Израиль
Пол: Male
Сообщения: 4 155
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
2 All
Так еще одна задачка "на засыпку" ![]() Дано бинарное дерево. Ну, например: Код:
5 / \ 1 4 / \ \ 3 7 6 Код:
5 1 4 3 7 6 ![]()
__________________
Фотолюбительщина Пока слова не сказаны - ничего нет. Но если они сказаны, даже то чего нет становится реальностью. |
![]() |
![]() |
# 46 | |
Newbie
Регистрация: 25.11.2003
Адрес: Near monitor
Сообщения: 49
![]() |
Цитата:
Последний раз редактировалось a_ber; 04.05.2004 в 10:47. |
|
![]() |
![]() |
# 47 | |
Добрый фей-мод
Регистрация: 18.09.2002
Адрес: Израиль
Пол: Male
Сообщения: 4 155
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
a_ber
Цитата:
![]() Ладно, раз ты уже спрашивал, даю решение. 1) Ставим один из указателей в начало (head), а второй оставляем указывать на последнюю точку встречи. 2) Пускаем их бежать с одинаковой скоростью. 3) Точка их встречи и будет началом петли.
__________________
Фотолюбительщина Пока слова не сказаны - ничего нет. Но если они сказаны, даже то чего нет становится реальностью. |
|
![]() |
![]() |
# 48 | |
Full Member
Регистрация: 19.07.2003
Адрес: Israel
Сообщения: 924
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
__________________
Столько дел, что и работой занятся некогда... |
|
![]() |
![]() |
# 49 |
Добрый фей-мод
Регистрация: 18.09.2002
Адрес: Израиль
Пол: Male
Сообщения: 4 155
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
joker99
Ну да, конечно. А теперь представь такую ситуацию. Мы в языке с GC. Юзер позвал 10 раз enqueue() и 5 раз dequeue(), получил объекты, поработал с ними и благополучно отпустил. И больше не зовёт очередь. Но эти 5 объектов не будет собраны GC, поскольку ты продолжаешь ссылаться на них. А теперь представь, что объекты эти занимают каждый много места. Вота так они и будут болтаться у тебя в памяти как "га*но в проруби". И всё из-за строки которую ты упрямо отказываешся вставить в свой код споришь уже несколько постов: array[head] = null;
__________________
Фотолюбительщина Пока слова не сказаны - ничего нет. Но если они сказаны, даже то чего нет становится реальностью. |
![]() |
![]() |
# 51 |
Full Member
Регистрация: 20.07.2002
Адрес: Находка
Сообщения: 740
![]() ![]() ![]() ![]() ![]() ![]() |
Вот вам простенькая задачка: дана матрица N*M, заполненная случайным образом 0 и 1. 0-чёрный, а 1-белый цвета. Посчитать число белых "паятен" на чёрном "фоне". Стоящие рядом по вертикали или горизонтали 1 считать за одно пятно (на искосок не считается). Пример:
011100 101101 110001 Здесь 3 "пятна" |
![]() |
![]() |
# 52 | |
Добрый фей-мод
Регистрация: 18.09.2002
Адрес: Израиль
Пол: Male
Сообщения: 4 155
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
Код:
int iSpots = 0, iCounter = 0; for (int i = 0; i < M; i++, iCounter = 0) { for(int j = 0; j < N; j++) { if ( matrix[i][j] == 1 ) iCounter++; else { if ( iCounter >= 2 ) iSpots++; iCounter = 0; } } } iSpots - содержит число пятен.
__________________
Фотолюбительщина Пока слова не сказаны - ничего нет. Но если они сказаны, даже то чего нет становится реальностью. Последний раз редактировалось Programmer; 08.05.2004 в 11:05. |
|
![]() |
![]() |
# 54 |
Добрый фей-мод
Регистрация: 18.09.2002
Адрес: Израиль
Пол: Male
Сообщения: 4 155
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
V@nya
Больше 2-х единиц как по вертикали так и по горизонтали? Или одна единица?
__________________
Фотолюбительщина Пока слова не сказаны - ничего нет. Но если они сказаны, даже то чего нет становится реальностью. |
![]() |
![]() |
# 55 |
Full Member
Регистрация: 19.07.2003
Адрес: Israel
Сообщения: 924
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Может так:
Код:
int iSpots = 0 for (int i = 0; i < M; i++) { for(int j = 0; j < N; j++) { if ( matrix[i][j] == 1 ) { FillSpot(matrix,i,j) iSpots++; } } void FillSpot(int* matrix,int i,int j) { if (i>= M || j>= N || matix[j*M+i] == 0) return; matix[i][j] = 2; FillSpot(matrix,i+1,j); FillSpot(matrix,i-1,j); FillSpot(matrix,i,j-1); FillSpot(matrix,i,j+1); }
__________________
Столько дел, что и работой занятся некогда... |
![]() |
![]() |
# 56 |
Full Member
Регистрация: 20.07.2002
Адрес: Находка
Сообщения: 740
![]() ![]() ![]() ![]() ![]() ![]() |
joker99, почти правильно,но если i=0, то FillSpot(matrix,i-1,j); вылетит с ошибкой т.к. будет присваивать m[-1,j] двойку.
Я функцию FillSpot (kill) делал так: void kill(int i, int j) { m[i][j]=0; if (i>1) if (m[i-1][j]==1) kill(i-1,j); if (i<N) if (m[i+1][j]==1) kill(i+1,j); if (j>1) if (m[i][j-1]==1) kill(i,j-1); if (j<M) if (m[i][j+1]==1) kill(i,j+1); } Массив был глобальной переменной |
![]() |
![]() |
# 58 |
Добрый фей-мод
Регистрация: 18.09.2002
Адрес: Израиль
Пол: Male
Сообщения: 4 155
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Вот вам еще легонькая задачка.
дано: 1 1 1 = 6 2 2 2 = 6 3 3 3 = 6 4 4 4 = 6 5 5 5 = 6 6 6 6 = 6 7 7 7 = 6 8 8 8 = 6 9 9 9 = 6 Требуется: используя ЛЮБЫЕ арифмитические знаки, сделайте выражение верным. Например: 2 + 2 + 2 = 6. Какие угодно знаки и где угодно. Главное, что-бы выражение было правильным. взято с аудиогейта Там же и решение. Так что не смотрите заранее.
__________________
Фотолюбительщина Пока слова не сказаны - ничего нет. Но если они сказаны, даже то чего нет становится реальностью. Последний раз редактировалось Programmer; 10.05.2004 в 23:34. |
![]() |