13.12.2015 / 18:35 | |
Askalite Пользователь Сейчас: Offline
Имя: Аскалайт Регистрация: 12.10.2011
| Можно хранить размер числа в байтах: Размер числа:Число размера файла:файл
|
15.12.2015 / 18:19 | |
mcdevil Пользователь Сейчас: Offline
Имя: null Регистрация: 17.10.2015
| Всем привет. На олимпиаде была такая задача, есть кенгуру и поле. Размер поля в ширину n клеток, длина 1 клетка. Кенгуру может прыгать k (k=<n) клеток, нужно рассчитать возможные ходы. Например, n=5, k = 2; Out:
1 1 1 1 1
1 2 2
2 2 1
2 1 1 1
1 1 1 2
Как это сделать? Изменено Ксакеп (17.12 / 10:24) (всего 1 раз) |
17.12.2015 / 10:25 | |
Ксакеп Модератор форума Сейчас: Offline
Регистрация: 20.06.2012
| mcdevil, почему у тебя где-то 5, а где-то 3 ширина поля?
|
17.12.2015 / 11:36 | |
aNNiMON Супервизор Сейчас: Offline
Имя: Витёк Регистрация: 11.01.2010
| Ксакеп, потому что "Out:"
__________________
let live |
17.12.2015 / 11:38 | |
Ксакеп Модератор форума Сейчас: Offline
Регистрация: 20.06.2012
| aNNiMON, хрень сморозил.
|
17.12.2015 / 11:42 | |
aNNiMON Супервизор Сейчас: Offline
Имя: Витёк Регистрация: 11.01.2010
| Ксакеп, подумай ещё раз. В сумме везде 5. Или тебе нули ещё дописать?
__________________
let live |
17.12.2015 / 11:44 | |
Dinisimys Пользователь Сейчас: Offline
Имя: Денис Регистрация: 30.07.2012
| mcdevil, а откуда кенгуру начинает пригать? С первой клетки? То ли ты что-то не дописал, то ли я тугой
|
17.12.2015 / 12:31 | |
Ксакеп Модератор форума Сейчас: Offline
Регистрация: 20.06.2012
| aNNiMON, а, я сначала подумал, это какая-то доска. mcdevil, динамическое программирование.
|
17.12.2015 / 13:57 | |
Freddy Пользователь Сейчас: Offline
Имя: Игорь Откуда: Воронеж Регистрация: 30.01.2010
| Цитата mcdevil: Всем привет. На олимпиаде была такая задача, есть кенгуру и поле. Размер поля в ширину n клеток, длина 1 клетка. Кенгуру может прыгать k (k=<n) клеток, нужно рассчитать возможные ходы. Например, n=5,Можно построить такое дерево, в узлах которого содержится пройденный кенгуру путь. Пример: В корне дерева элемент со стоимостью 0. У этого узла - k потомков. Для k = 2 получится:
0 |-1 |-2
Далее строишь для каждого дочернего узла поддеревья, следя за тем условием, чтобы значения в узлах поддеревьев не превысили n. Получится так:
0 |-1 | |-2 (потому что прыжок равен 1 + значение в родителе 1) | |-3 (потому что прыжок равен 2 + значение в родителе 1) | |-2 |-3 (потому что прыжок равен 1 + значение в родителе 2) |-4 (потому что прыжок равен 2 + значение в родителе 2)
Построив дерево целиком, нужно обойти все возможные пути от корня к листьям. Например, первый путь: 0 -> 1 -> 1 (В узле значение 2, у родителя - значение 1. Вычитаем и получаем единицу)... и т. д.
Надеюсь, смысл понятен.
|
17.12.2015 / 14:05 | |
Dinisimys Пользователь Сейчас: Offline
Имя: Денис Регистрация: 30.07.2012
| Текстовое условие так и не понял, но аннимон хоть просветил насчет исходных данных. Основываясь только на аут, может я и не правильно понял, но вот какойто алгоритм: m=[1,1...,1]
jmin=n
for(I=0;сумма(m)>=n;I++) {
m[i]=k
jmax=jmin-1
jmin-=k-1
for(j=jmax;j>jmin;j--) {
m[j]=0
}
}
Так на глаз проверил, нету где протестировать. Это так сказать начало, там еще.надо инверсию сделать, чтобы вывести еще и задом наперед все это. Это уже думаю сам сделаешь. |