| 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. |
|
|