IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Задача о кубике, Перемещение игральной кости
LammerzAttack
сообщение 10.03.2005 21:18
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 18
Пол: Мужской

Репутация: -  0  +


Вот такая интересная задача:
Имя входного файла: dice.in
Имя выходного файла: dice.out
Количество тестов: 15
Ограничение по памяти: 1 Мб
Ограничение по времени: 1 с

На клетчатом поле размером MxN в левом нижнем углу лежит игральная кость. За один ход ее можно перекатить на клетку вправо или вверх. Стоимостью пути называется сумма чисел на верхней грани кубика во всех клетках пути. Найдите минимальную стоимость пути в правый верхний угол.

Формат входного файла
В первой строке два натуральных числа N и M <= 1000 — размеры доски. Во второй строке три числа от 1 до 6 — числа на верхней, левой и передней грани кубика соответственно (сумма чисел на противоположных гранях кубика равна 7).

Формат выходного файла
Одно натуральное число — минимальная стоимость искомого пути.

Пример
dice.in
5 5
1 4 5

dice.out
29

Помогите с решением.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
virt
сообщение 18.03.2005 19:57
Сообщение #2


Знаток
****

Группа: Пользователи
Сообщений: 419
Пол: Мужской

Репутация: -  6  +


Код
Program Dice;
uses crt;
type
  line=array[1..300] of shortint;
  matrix=array[1..6] of shortint;
var
      NN,MM,limit,k:integer;
      mass:matrix;
      lin,way:line;

procedure dices(masss:matrix;direct:char;n,m,turn:integer);
begin
  if (n<1) or (m>MM) or (turn>=limit) then exit
     else
        if (nn-n+1)+m=NN+MM then
           begin
              limit:=turn;  {на данный момент наименьшая сумма  верхних граней}
              lin:=way;
              exit;
           end;
  if direct='r' then {так кубик вращается вправо}
     begin
        k:=masss[5];
        masss[5]:=masss[4];
        masss[4]:=masss[3];
        masss[3]:=masss[2];
        masss[2]:=k;
     end else
               if direct='u' then {так кубик вращается вверх}
                  begin
                     k:=masss[6];
                     masss[6]:=masss[2];
                     masss[2]:=masss[1];
                     masss[1]:=masss[4];
                     masss[4]:=k;
                  end;
  way[(nn-n)+m]:=masss[2]; {промежуточный путь кубика в виде массива значений верхних  граней}
  dices(masss,'u',n-1,m,turn+masss[2]);
  dices(masss,'r',n,m+1,turn+masss[2]);
end;


BEGIN
  clrscr;
  writeln('ўўҐ¤ЁвҐ N');   readln(NN);
  writeln('ўўҐ¤ЁвҐ M');   readln(MM);
  limit:=maxint; {типа первый предел суммы, от фоная}
  for k:=1 to 300 do
     lin[k]:=0;           {массив ходов}
  way:=lin;
  writeln('ўўҐ¤ЁвҐ front');  readln(mass[1]);     {это сам кубик}
  writeln('ўўҐ¤ЁвҐ up');     readln(mass[2]);     {это сам кубик}
  writeln('ўўҐ¤ЁвҐ right');  readln(mass[3]);     {это сам кубик}
  mass[4]:=7-mass[2]; {это сам кубик}
  mass[5]:=7-mass[3];  {это сам кубик}
  mass[6]:=7-mass[1];   {это сам кубик}
  dices(mass,'0',nn,1,0);
  readln;
END.


так вроде лучше.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
madrabbit
сообщение 18.03.2005 22:56
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской

Репутация: -  0  +


Цитата

так вроде лучше.


ага, спасибо, вроде смотрю-правильно, а тест не работает... в чем ошибка
и 1000*1000 не получается-переполнение стека, че делать... blink.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 22:30
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"