...
Угла из скобок нет.
+1 тебе. Еще раз спасибо
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
рекурсия- разбиение и сборка квадрата |
Lapp |
Сообщение
#61
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
У меня при N=8 первая комбинация такая получается (скопировал из cmd): Спасибо, Unconnected. Я все никак не мог добраться до машины с ТР.... Угла из скобок нет. +1 тебе. Еще раз спасибо все, получается. да Так зачем тогда было говорить то, чего нет? Цитата почему кое-где по одной букве.. она считается за прямоугольник? Конечно. А чем он провинился?.. Не дорос?.. В условии нет границы снизу на размер.-------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Екатерина7 |
Сообщение
#62
|
Новичок Группа: Пользователи Сообщений: 43 Пол: Женский Репутация: 0 |
потому что сначала не получалось..(
Добавлено через 6 мин. а можно процедуру Put пошагово объяснить, конкретнее,если можно.. и что такое Inc(k); Добавлено через 1 мин. tRectangle, tLocation это какой-то тип? |
Lapp |
Сообщение
#63
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
потому что сначала не получалось..( Что не получалось? Так были скобки углом или не были? Как же трудно от тебя получить ответ на простейший вопрос..Цитата а можно процедуру Put пошагово объяснить, конкретнее,если можно.. Можно, конечно. Перечитай пост #45 ( рекурсия- разбиение и сборка квадрата ). Я не хочу копипастить его сюда. Более конкретно - на более конкретные вопросы..Цитата и что такое Inc(k); Inc(x) эквивалентно x:=x+1 .Цитата tRectangle, tLocation это какой-то тип? Да, типы. Смотри программный код, а также пост #6 ( рекурсия- разбиение и сборка квадрата ).-------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Екатерина7 |
Сообщение
#64
|
Новичок Группа: Пользователи Сообщений: 43 Пол: Женский Репутация: 0 |
а для чего вот это?
const r0: tRectangle=(a:1; b:1); l0: tLocation=(x: 0; y: 0); что такое r0 и l0? Добавлено через 4 мин. еще хотела спросить, а что делает эта функция function Overlap(r1: tRectangle; l1: tLocation; r2: tRectangle; l2: tLocation): boolean; begin Overlap:= (Abs(l2.x*2+r2.a-l1.x*2-r1.a) < r1.a+r2.a) and (Abs(l2.y*2+r2.b-l1.y*2-r1.b) < r1.b+r2.b) end; var r: array[1..n*n+10]of tRectangle; l: array[1..n*n+10]of tLocation; s,i,m,k,done: integer; t: tRectangle; u: tLocation; Clear: boolean; Добавлено через 16 мин. function Overlap- эта функция проверяет пересекаются ли прямоугольники? |
Unconnected |
Сообщение
#65
|
mea culpa Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: 24 |
Цитата const r0: tRectangle=(a:1; b:1); l0: tLocation=(x: 0; y: 0); Объявление переменных r0 и l0 типами tRectangle и TLocation соответственно (только почему-то он сделал это в секции констант). Сразу же эти переменные инициализируются, т.е. им присваиваются начальные значения (вот эти части: "=(a:1; b:1);=(x: 0; y: 0);"). Цитата еще хотела спросить, а что делает эта функция function Overlap(r1: tRectangle; l1: tLocation; r2: tRectangle; l2: tLocation): boolean; Ну нифига себе... Мы тут, понимаешь, на первой странице этого топа способы проверки на пересечение двух прямоугольников придумывали, а она и не заметила..)) Цитата var r: array[1..n*n+10]of tRectangle; l: array[1..n*n+10]of tLocation; s,i,m,k,done: integer; t: tRectangle; u: tLocation; Clear: boolean; Секция описания переменных, тут всё должно быть понятно. Сообщение отредактировано: Unconnected - -------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
Екатерина7 |
Сообщение
#66
|
Новичок Группа: Пользователи Сообщений: 43 Пол: Женский Репутация: 0 |
заметила. а что такое NoOne?
Добавлено через 9 мин. например, вот тут Код begin if y<=n then begin li.x:=x; li.y:=y; NoOne:=true; или тут Код for j:=1 to m do if l[j].x>0 then Clear:=Clear and not Overlap(r[i],li,r[j],l[j]); if Clear then begin Inc(k); l[i]:=li; if k<>m then Put(x mod n+1,y+x div n); l[i]:=l0; Dec(k); NoOne:=false end end; j:=a; a:=b; b:=j; end end; if NoOne then Put(x mod n+1,y+x div n) end end; |
Unconnected |
Сообщение
#67
|
mea culpa Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: 24 |
Ну, насколько я понял, NoOne - булевая переменная, обеспечивающая условие выхода из рекурсии. Т.е. если рекурсивная функция находит очередной вариант, то рекурсивно вызывается эта же функция с изменёнными параметрами, иначе рекурсия кончается.
Условие выхода из рекурсии: if NoOne then Put(x mod n+1,y+x div n) -------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
Екатерина7 |
Сообщение
#68
|
Новичок Группа: Пользователи Сообщений: 43 Пол: Женский Репутация: 0 |
я так поняла, что function Overlap(r1: tRectangle; l1: tLocation; r2: tRectangle; l2: tLocation): boolean; -функция, которая выдает True, если прямоугольники пересекаются и False,если нет. так? только если честно, этого я в программе не вижу, в смысле где именно это описывается..
Добавлено через 1 мин. ааа.. спасибо большое! Добавлено через 5 мин. можешь еще объяснить хотя бы в кратце, что делает procedure JustSet; {подготовка входных данных} вот тут with t do repeat Добавлено через 1 мин. |
Lapp |
Сообщение
#69
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
я так поняла, что function Overlap(r1: tRectangle; l1: tLocation; r2: tRectangle; l2: tLocation): boolean; -функция, которая выдает True, если прямоугольники пересекаются и False,если нет. так? только если честно, этого я в программе не вижу, в смысле где именно это описывается.. Это не описывается. Это делается внутри самой функции. Алгоритм я подробно объяснил в одном из постов, посмотри выше.Цитата можешь еще объяснить хотя бы в кратце, что делает procedure JustSet; {подготовка входных данных} конечно.Это просто случайный выбор набора прямоугольников с условием, что их суммарная площадь равна площади квадрата (ну и каждая сторона не превосходит стороны квадрата). То, что из них действительно можно составить квадрат - не гарантируется (поэтому название JustSet - ПростоНабор). with t do repeat -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Екатерина7 |
Сообщение
#70
|
Новичок Группа: Пользователи Сообщений: 43 Пол: Женский Репутация: 0 |
спасибо всем огромное, кто принимал участие в решении этой задачи!!!
|
Текстовая версия | 11.05.2024 19:29 |