Текущий архив: 2013.07.14;
Скачать: CL | DM;
Вниз
Не могу решить простую задачку. Найти похожие ветки
← →
ХХХХХ (2013-02-25 14:44) [0]Имеется числовой массив от 1 до n.
Каждый элемент представляет собой ширину.
Т.е. 1-й элемент равен 10, значит его ширина 10 и т.д.
Дано число, в диапазоне от 0 до INFINITY.
Нужно определить к какому элементу это число будет максимально близко.
Т.е. есть массив: 10, 5, 3, 6, 50, 1, 4.
Дано число 70. Ближе всего будет к 6-тому элементу.
Не могу придумать алгоритм.
← →
ХХХ (2013-02-25 14:46) [1]Удалено модератором
← →
картман © (2013-02-25 14:59) [2]Удалено модератором
← →
clickmaker © (2013-02-25 15:04) [3]Удалено модератором
← →
Дмитрий С © (2013-02-25 15:07) [4]Как бы ты решил эту задачу сам, без компьютера?
← →
clickmaker © (2013-02-25 15:12) [5]> Как бы ты решил эту задачу сам, без компьютера?
без компьютера он ее уже неправильно решил
> Ближе всего будет к 6-тому элементу
← →
Труп Васи Доброго © (2013-02-25 15:45) [6]
> Нужно определить к какому элементу это число будет максимально
> близко.
Ответ здесь порылся! В определении слова [b]близко[/b].
← →
БарЛог © (2013-02-25 16:37) [7]ХХХХХ (25.02.13 14:44)
Модуль разности
← →
brother © (2013-02-25 16:42) [8]может к 5 элементу?
← →
Дмитрий С © (2013-02-25 16:47) [9]
> БарЛог © (25.02.13 16:37) [7]
> ХХХХХ (25.02.13 14:44)
>
> Модуль разности
Это настолько очевидно, что кажется, что проблемы возникнут и в остальной части алгоритма (поиск наименьшей разницы)
← →
ХХХХХ (2013-02-25 17:08) [10]
> brother © (25.02.13 16:42) [8]
>
> может к 5 элементу?
МОжет и к 5-тому. :)
← →
O'ShinW © (2013-02-25 17:33) [11]
> Как бы ты решил эту задачу сам, без компьютера?
+1
распиши словами
← →
RWolf © (2013-02-25 17:33) [12]интересно, при чём тут ширина.
может, подразумевалось, что сравниваются не числа сами по себе, а частичные суммы ряда, если можно так выразиться?
← →
O'ShinW © (2013-02-25 17:41) [13]>> RWolf © (25.02.13 17:33) [12]
аа..
т.е. если так:
http://www.fotolink.su/v.php?id=deedea3219ef92622b7b3baff9020f29
то ответ - "4й отрезок"
← →
O'ShinW © (2013-02-25 17:45) [14]ну, тогда создаём второй массив, где каждый элемент = сумма ряда до него из исходного.
// (заливаем костер из чайника) :)
и задача сводится к предыдущей
← →
БарЛог © (2013-02-25 17:47) [15]Дмитрий С © (25.02.13 16:47) [9]
> Это настолько очевидно, что кажется, что проблемы возникнут и в остальной
> части алгоритма (поиск наименьшей разницы)
Автору не очевидно :)
← →
brother © (2013-02-25 17:50) [16]> МОжет и к 5-тому. :)
те ты даже задачу не правильно понял/ставишь?
← →
ХХХХХ (2013-02-26 21:46) [17]
> brother © (25.02.13 17:50) [16]
>
> > МОжет и к 5-тому. :)
>
> те ты даже задачу не правильно понял/ставишь?
К 5. :)
Извините, чо.
← →
Jeer © (2013-02-26 21:57) [18]Да ладно вам - что придираетесь?
Это новый сколковец ( а может и фамилия у него Сколковец? )
Открыватель новых рядов, соискатель грантов от микрософт и вообще - душка-парень.
← →
ХХХХХ (2013-02-26 21:59) [19]Давайте учить меня решать задачу. Хорошо?
В цикле я перебираю все элементы по индексу,
как только суммарная ширина превышает заданную выходим и запоминаем
этот элемент. Который слева.
← →
ХХХХХ (2013-02-26 22:00) [20]А дальше как?
← →
Jeer © (2013-02-26 22:01) [21]
> суммарная ширина
Подробнее - про ширину. Это очень всех интересует.
Обычно мужики меряются длиной, но.. допускаю варианты.
← →
ХХХХХ (2013-02-26 22:05) [22]
> Jeer © (26.02.13 22:01) [21]
Представьте, что каждый элемент здание.
Со своей шириной. А не длиной.
Или плитка, где тоже ширина, а не длина.
> Обычно мужики меряются длиной, но.. допускаю варианты.
А у меня стоит.
Хи-хи.
← →
Jeer © (2013-02-26 22:07) [23]При решении математических задач целесообразно абстрагироваться от прикладной составляющей.
← →
ХХХХХ (2013-02-26 22:10) [24]
> Jeer © (26.02.13 22:07) [23]
Ширина лучше звучит чем длина.
Длина это что-то вертикальное.
← →
clickmaker © (2013-02-26 22:11) [25]> Длина это что-то вертикальное
а высота - что-то горизонтальное, ага
← →
Jeer © (2013-02-26 22:13) [26]
> а высота - что-то горизонтальное, ага
Как ее поставишь - тем она и будет:)
← →
ХХХХХ (2013-02-26 22:25) [27]Сойдемся, коллеги, на ширине. :)
← →
Dennis I. Komarov © (2013-02-26 22:29) [28]
> ХХХХХ (26.02.13 21:46) [17]
>
> > brother © (25.02.13 17:50) [16]
> >
> > > МОжет и к 5-тому. :)
> >
> > те ты даже задачу не правильно понял/ставишь?
>
>
> К 5. :)
> Извините, чо.
так 4 же
← →
Pavia © (2013-02-26 22:40) [29]Чего тут делать взял и написал всего 4 строчки.
function (Mas:TAReal; Value:Real):Integer;
var a:TAReal;
begin
a:=Copy(Mas);
MainOp("-",a,a,Value);
MainOp("abs",a);
Result:=MinIndex(a);
end;
← →
Inovet © (2013-02-26 22:40) [30]> [19] ХХХХХ (26.02.13 21:59)
> как только суммарная ширина превышает заданную выходим и запоминаем
Суммарная? Зачем выходим, может там ещё лучше будет.
← →
Pavia © (2013-02-26 22:44) [31]
> Давайте учить меня решать задачу. Хорошо?
Если клиент платёже способен, то можно поучить.
← →
ХХХХХ (2013-02-26 22:47) [32]> Pavia © (26.02.13 22:40) [29]
Я ничего не понял.
> Inovet © (26.02.13 22:40) [30]
>
> > [19] ХХХХХ (26.02.13 21:59)
> > как только суммарная ширина превышает заданную выходим
> и запоминаем
>
> Суммарная? Зачем выходим, может там ещё лучше будет.
А как еще?
Ширина каждого задана в абсолютных координатах.
А заданное число в ... не знаю каких. :)
← →
ХХХХХ (2013-02-26 22:49) [33]
> Pavia © (26.02.13 22:44) [31]
>
>
> > Давайте учить меня решать задачу. Хорошо?
>
> Если клиент платёже способен, то можно поучить.
Во время учебы вы можете глумиться надо мною
и всячески обзывать. Не я такой, жизнь такая. :)
← →
clickmaker © (2013-02-26 22:52) [34]> Ширина каждого задана в абсолютных координатах
с каких это пор ширина задается в координатах?
← →
Jeer © (2013-02-26 23:30) [35]
> с каких это пор ширина задается в координатах?
Ну как..
Вот надо тебе попасть в "ширину", заданную географическими координатами ее центра масс и полигоном периметра.
Ты - там, она - вон там.
И как ты без GPS-Глонасс?
← →
знайка (2013-02-26 23:34) [36]
> Глонасс
Интересно, почему не, например, глонаспус? :)
← →
Jeer © (2013-02-26 23:39) [37]Это - в Роскосмос.
Я-то тут при чем?
← →
Труп Васи Доброго © (2013-02-27 11:45) [38]Пока ты не определишься с тем, что значит "максимально близко" ничего не получится. А то смотрю уже дошли до ширины в абсолютных координатах!!!
← →
БарЛог © (2013-02-27 11:47) [39]рассадник флуда :(
← →
Inovet © (2013-02-27 12:05) [40]> [32] ХХХХХ (26.02.13 22:47)
> > Суммарная? Зачем выходим, может там ещё лучше будет.
>
> А как еще?
Ну и при чём тут "суммарная", что это вообще означает?
> [32] ХХХХХ (26.02.13 22:47)
> Ширина каждого задана в абсолютных координатах.
> А заданное число в ... не знаю каких. :)
Координатах на прямой?
← →
ХХХХХ (2013-02-27 13:07) [41]
> Inovet © (27.02.13 12:05) [40]
>
> > [32] ХХХХХ (26.02.13 22:47)
> > > Суммарная? Зачем выходим, может там ещё лучше будет.
>
> >
> > А как еще?
>
> Ну и при чём тут "суммарная", что это вообще означает?
Смотрим 1-й элемент - ширина 10.
Смотрим 2-й элемент - ширина 5.
Смотрим 3-й элемент - ширина 40.
Нам дают число 50.
Суммарная ширина 65.
Ответ 3-й элемент.
> Координатах на прямой?
Да.
← →
Inovet © (2013-02-27 13:09) [42]> [41] ХХХХХ (27.02.13 13:07)
> Суммарная ширина 65.
Показывай, как считал
← →
Труп Васи Доброго © (2013-02-27 13:32) [43]
> Суммарная ширина
новое понятие в математике!
> Суммарная ширина 65.
новые правила в математике?
← →
ХХХХХ (2013-02-27 13:40) [44]
> Inovet © (27.02.13 13:09) [42]
>
> > [41] ХХХХХ (27.02.13 13:07)
> > Суммарная ширина 65.
>
> Показывай, как считал
Опечатка.
Конечно же 55.
← →
БарЛог © (2013-02-27 13:43) [45]ХХХХХ (27.02.13 13:40) [44]
> Опечатка.
> Конечно же 55.
Ногами и по лицу.
← →
ХХХХХ (2013-02-27 13:45) [46]
> Труп Васи Доброго © (27.02.13 13:32) [43]
>
>
> > Суммарная ширина
>
> новое понятие в математике!
>
А что же это?
← →
Inovet © (2013-02-27 13:45) [47]> [44] ХХХХХ (27.02.13 13:40)
> Опечатка.
> Конечно же 55.
Так, хорошо. Значит такое решение тоже верное?
Смотрим 1-й элемент - ширина 40.
Смотрим 2-й элемент - ширина 5.
Смотрим 3-й элемент - ширина 10.
Нам дают число 50.
Суммарная ширина 55.
← →
Inovet © (2013-02-27 13:46) [48]> [46] ХХХХХ (27.02.13 13:45)
> А что же это?
Ты хадачу поставил, объясни что это.
← →
Труп Васи Доброго © (2013-02-27 13:52) [49]
> А что же это?
Да Х.Е.З. что это такое М.Т.!!! Ты это слово придумал, не я, вот и объясни что это.
Длину знаю, ширину знаю, даже периметр и площадь знаю и объём до кучи и всякие там средние значения и даже максимумы с минимумами, а вот что такое "суммарная ширина" трёх/четырёх чисел не в курсе, наверно плохо учился.
← →
ХХХХХ (2013-02-27 14:01) [50]
> Inovet © (27.02.13 13:46) [48]
>
> > [46] ХХХХХ (27.02.13 13:45)
> > А что же это?
>
> Ты хадачу поставил, объясни что это.
Суммарная ширина!
Или общая ширина элементов: 1, 2, 3 и т.д.
> Так, хорошо. Значит такое решение тоже верное?
Да.
← →
Jeer © (2013-02-27 14:18) [51]Да это тест бота идет, только вот с какой он стороны? :)
← →
Inovet © (2013-02-27 14:19) [52]> [50] ХХХХХ (27.02.13 14:01)
Дальше.
Какое решение для такого набора
10, 5, 40, 5
и числа 50?
Ответы
1. элементы 1,2,3
2. элементы 2,3,4
← →
Inovet © (2013-02-27 14:20) [53]> [51] Jeer © (27.02.13 14:18)
> Да это тест бота идет
Бот заточен на кройку и шитьё.
← →
brother © (2013-02-27 14:21) [54]а, я кажись понял!
max:= ...;
sum:=0;
sum2:= 0;
i:=0;
repeat
inc(i);
sum2:= sum;
sum:= sum + mas[i];
until sum >= max;
if (max - sum) < (max-sum2) then
// ближе i
else
// ближе i-1
оно?
← →
brother © (2013-02-27 14:29) [55]доплонение:
if (max - sum) = (max-sum2) then
// получается буридианов осел :)
else
if (max - sum) < (max-sum2) then
// ближе i
else
// ближе i-1
← →
ХХХХХ (2013-02-27 14:30) [56]
> brother © (27.02.13 14:21) [54]
>
> а, я кажись понял!
Да.
Да вы Псайкер!
> Jeer © (27.02.13 14:18) [51]
>
> Да это тест бота идет, только вот с какой он стороны? :)
Я не бот.
Честно.
← →
brother © (2013-02-27 14:34) [57]* Буриданов осел
← →
ХХХХХ (2013-02-27 14:43) [58]
> brother © (27.02.13 14:34) [57]
Я не умру.
← →
Inovet © (2013-02-27 14:44) [59]> [54] brother © (27.02.13 14:21)
> sum:=0;
> sum2:= 0;
А почему не все возможные сочетания из i?
← →
brother © (2013-02-27 14:45) [60]> А почему не все возможные сочетания из i?
потому что
repeat
inc(i);
← →
brother © (2013-02-27 14:47) [61]> Я не умру.
я так и думал, что не так поймете. объясняю, читать как:
не
> // получается буридианов осел :)
а
* Буриданов осел
и если не понятно сие значение: гуглите! будет познавательно!)
← →
Smile (2013-02-27 14:51) [62]> Не могу решить простую задачку
Рискну сделать предположение, что для тебя она уж не такая и простая
:)
← →
ХХХХХ (2013-02-27 14:51) [63]
> brother © (27.02.13 14:47) [61]
>
> > Я не умру.
>
Я же и говорю, я не умру, я выберу левую кучку вкуснятинки.
:)
← →
ХХХХХ (2013-02-27 14:53) [64]
> Smile (27.02.13 14:51) [62]
>
> > Не могу решить простую задачку
>
> Рискну сделать предположение, что для тебя она уж не такая
> и простая
> :)
Я чую, что она простая.
Но оказалась сложной.
Вот такой вот ещё один парадокс в треде.
А вообще, элементы - это строка.
Каждый элемент - буква, со своей шириной.
И я ищу, куда поставить каретку, при клике на самописный EDIT.
Такие дела. :)
← →
brother © (2013-02-27 14:54) [65]> Я же и говорю, я не умру, я выберу левую кучку вкуснятинки.
а!)
← →
Inovet © (2013-02-27 14:58) [66]> [60] brother © (27.02.13 14:45)
> > А почему не все возможные сочетания из i?
>
> потому что
> repeat
> inc(i);
Это не все сочетания.
← →
brother © (2013-02-27 15:01) [67]лично, я понял, что они идут по порядку, создавая в сумме общую, нарастающую) ширину)
← →
Inovet © (2013-02-27 15:04) [68]> [67] brother © (27.02.13 15:01)
> лично, я понял, что они идут по порядку, создавая в сумме
> общую, нарастающую) ширину)
Ну так автор это прояснил в 64 посте, после вытягивания клещами.
← →
ХХХХХ (2013-02-27 15:06) [69]
> Inovet © (27.02.13 15:04) [68]
>
> > [67] brother © (27.02.13 15:01)
> > лично, я понял, что они идут по порядку, создавая в сумме
> > общую, нарастающую) ширину)
>
> Ну так автор это прояснил в 64 посте, после вытягивания
> клещами.
Вообще-то тут про массив было.
← →
brother © (2013-02-27 15:11) [70]> Ну так автор это прояснил в 64 посте,
об этом я начал догадываться после [41] ))))))
← →
ХХХХХ (2013-02-27 15:15) [71]Удалено модератором
← →
brother © (2013-02-27 15:16) [72]Удалено модератором
← →
ХХХХХ (2013-02-27 15:22) [73]Удалено модератором
← →
brother © (2013-02-27 15:24) [74]Удалено модератором
← →
ХХХХХ (2013-02-27 15:26) [75]Удалено модератором
← →
Очень злой (2013-02-28 00:06) [76]Удалено модератором
← →
ХХХХХ (2013-02-28 00:24) [77]Удалено модератором
← →
ХХХХХ (2013-02-28 00:27) [78]Удалено модератором
← →
DevilDevil © (2013-02-28 09:22) [79]я просто - то так
а если огромный массив и нужно постоянно в нём искать - есть метод быстрее )function (Mas: TAReal; Value: Real): Integer;
var
i: integer;
BestDelta, Delta: Real;
begin
Result := 0;
BestDelta := abs(Mass[0]-Value);
for i := 1 to Length(Mas)-1 do
begin
Delta := abs(Mass[i]-Value);
if (Delta < BestDelta) then
begin
Result := i;
BestDelta := Delta;
end;
end;
end;
← →
Труп Васи Доброго © (2013-02-28 09:50) [80]
> а если огромный массив и нужно постоянно в нём искать
Тогда массив в БД, сортировка по возрастанию, выбор первого элемента, меньшего, чем твоё число и предыдушего (большего) элемента. Выбор из этих двух путём сравнения модулей разности -> "щастье"!
Страницы: 1 2 вся ветка
Текущий архив: 2013.07.14;
Скачать: CL | DM;
Память: 0.66 MB
Время: 0.009 c