Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.11.2008, 18:05   #1
Witaliy
Форумчанин Подтвердите свой е-майл
 
Регистрация: 27.04.2008
Сообщений: 179
По умолчанию Задача на матрицы

Привет всем!
Помоготие решыть задачю :

Задача E. Їжачок

На шахівниці розміром NxN розставлено К пронумерованих фішок. Їжачок, який збирає ці фішки, виходить з клітки з координатами (1,1) і повинен зібрати всі фішки в порядку зростання їх номерів. З клітки з координатами (x,y) їжачок може переміститися тільки в одну з чотирьох сусідніх, тобто в одну з кліток з координатами (x+1,y), (x-1,y), (x,y+1) або (x,y-1), звичайно з дотриманням умови, що він не повинен виходити за межі дошки. Вимагається визначити, яку мінімальну кількість ходів потрібно зробити, щоб зібрати всі фішки. Якщо їжачок проходить через клітку, де міститься фішка з більшим номером, ніж він зараз повинен узяти, то він просто проходить, а фішка залишається стояти.
Формат вхідних даних:
В першому рядку вхідного файлу містяться два числа розділених пропуском = N і K (1<=N,K<=1000). Далі у K рядках містяться по два цілі числа, розділені пропуском – координати фішок в порядку зростання їх номерів, тобто спочатку для першої фішки, потім для другої фішки і т.д.
Формат вихідних даних:
У вихідний файл необхідно вивести одне число – мінімальну кількість кроків їжачка, необхідну для збирання всіх фішок.
Приклади вхідних і вихідних даних:
Вхідні дані: Вихідні дані:
4 3
3 3
1 4
2 1 11



Я что-то решыл, вот мой код, но он как видите не полный:

program my;
var n,i,j,posx,posy : integer;
k : integer;
an1: array [1..1000] of integer;
an2: array [1..1000] of integer;
begin
readln(n,k);
for i := 1 to k do begin
readln(an1[i],an2[i]);
end;
posx := 0;
posy := 0:
for j:= 1 to k do
begin
if ... ??? .... тут незнаю что надо...
end;
end.


Помогите решыть, очень спасибо говорю стразу, что-бы потом не флудит !
www.programmer.uaforums.net - Український форум програмістів.

www.satellite.ipsys.net - Український форум супутникового телебачення.
Witaliy вне форума Ответить с цитированием
Старый 07.11.2008, 19:50   #2
Witaliy
Форумчанин Подтвердите свой е-майл
 
Регистрация: 27.04.2008
Сообщений: 179
По умолчанию

Извините, вот задача на русском:

Задача E. Ежик

На шахматнице розмиром NxN расставлено К пронумерованных фишек. Ежик, который собирает эти фишки, выходит из клетки с координатами (1,1) и должен собрать все фишки в порядке роста их номеров. Из клетки с координатами (x,y) ежик может переместиться только в одну из четырех соседних, то есть в одну из клеток с координатами (x+1,y), (x-1,y), (x,y+1) или (x,y-1), обычно с соблюдением условия, что он не должен выходить за пределы доски. Требуется определить, какое минимальное количество ходов нужно сделать, чтобы собрать все фишки. Если ежик проходит через клетку, где содержится фишка с большим номером, чем он сейчас должен взять, то он просто проходит, а фишка остается стоять.
Формат входных данных:
В первой строке входного файла содержатся два числа разделенных пропуском = N и K (1<=N,K<=1000). Дальше в K строках содержатся по два целых числа, разделенные пропуском – координаты фишек в порядке роста их номеров, то есть сначала для первой фишки, потом для второй фишки и т.д.
Формат выходных даих:
В исходный файл необходимо вывести одно число – минимальное количество шагов ежика, необходимое для сбора всех фишек.
Примеры входных и исходных данных:
Входные данные: Исходные данные:
4 3
3 3
1 4
2 1 11
www.programmer.uaforums.net - Український форум програмістів.

www.satellite.ipsys.net - Український форум супутникового телебачення.
Witaliy вне форума Ответить с цитированием
Старый 07.11.2008, 19:56   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

НУ пусть ежик ходит буквой Г в разных случаях повернутой по разному, это помоему кратчайший путь в любом из раскладов...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.11.2008, 20:09   #4
Witaliy
Форумчанин Подтвердите свой е-майл
 
Регистрация: 27.04.2008
Сообщений: 179
По умолчанию

а хоть кусочек кода покажыте? :'(
www.programmer.uaforums.net - Український форум програмістів.

www.satellite.ipsys.net - Український форум супутникового телебачення.
Witaliy вне форума Ответить с цитированием
Старый 07.11.2008, 20:31   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну на скорую руку могу только заполнение поля показать
(просто ща ГОСТик один в инете рою...)
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, StdCtrls;

type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    procedure FormCreate(Sender: TObject);
    procedure StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var i,k,e:integer;
begin
 e:=6;     randomize;
 for i:=0 to StringGrid1.RowCount-1 do
  for k:=0 to StringGrid1.ColCount-1 do if (random(5)=2)and(e>0)
  then begin StringGrid1.Cells[i,k]:=inttostr(e);   dec(e);
  end;

end;

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
 if StringGrid1.Cells[acol,arow]<>'' then begin
  StringGrid1.Canvas.Brush.Color:=clRed;
 end else   StringGrid1.Canvas.Brush.Color:=clWindow;
   StringGrid1.Canvas.FillRect(rect);


end;

end.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.11.2008, 20:33   #6
Witaliy
Форумчанин Подтвердите свой е-майл
 
Регистрация: 27.04.2008
Сообщений: 179
По умолчанию

спасибо
мне бы на Паскале, но Дельфи я знаю, поетому розберусь, но если кто-то поможет - буду блпгодарен...
www.programmer.uaforums.net - Український форум програмістів.

www.satellite.ipsys.net - Український форум супутникового телебачення.
Witaliy вне форума Ответить с цитированием
Старый 07.11.2008, 21:05   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

В принципе вот могу предложить так определять кол-во ходов буквой Г:
Код:
function aga(ax,ay,bx,by:integer):integer;
begin
 aga:=abs(ax-bx)+abs(by-ay);
end;
Здесь ax,ay - положение фишки
bx,by - положение ежика
Результат соответственно кол-во ходов до этой фишки буквой Г
Уловил идею?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.11.2008, 21:09   #8
Witaliy
Форумчанин Подтвердите свой е-майл
 
Регистрация: 27.04.2008
Сообщений: 179
По умолчанию

Что-то не могу розобраться... для чего в звдвче Random?
www.programmer.uaforums.net - Український форум програмістів.

www.satellite.ipsys.net - Український форум супутникового телебачення.
Witaliy вне форума Ответить с цитированием
Старый 07.11.2008, 21:12   #9
Witaliy
Форумчанин Подтвердите свой е-майл
 
Регистрация: 27.04.2008
Сообщений: 179
По умолчанию

Цитата:
Уловил идею?
Вроде да, попроубую, спасибо
www.programmer.uaforums.net - Український форум програмістів.

www.satellite.ipsys.net - Український форум супутникового телебачення.
Witaliy вне форума Ответить с цитированием
Старый 07.11.2008, 21:16   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
для чего в звдвче Random?
Случайное раскидывание фишек.
Цитата:
Вроде да, попроубую
Малацца. Я в тебя верю.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на матрицы щдуп Паскаль, Turbo Pascal, PascalABC.NET 3 26.06.2008 08:52
Задача на матрицы и массивы kaliha Помощь студентам 3 17.01.2008 23:46
Задача на матрицы Integral Паскаль, Turbo Pascal, PascalABC.NET 1 12.12.2007 13:32
Задача с вводом матрицы на С Aero Помощь студентам 1 28.10.2007 14:50