93NeRO93
Новичок
|

Плиз помогите с задачкой вот её условия: На клетчатом прямоугольном поле размером n на m клеток находятся мышка и две кошки. Первой ходит мышка, затем по одному ходу совершают кошки, затем снова мышка и т.д. За один ход как кошка, так и мышка, перемещаются на одно поле по вертикали или горизонтали. Если мышка оказывается на краю поля, то своим очередным ходом она спрыгивает с поля и спасается от кошек. Если своим очередным ходом одна из кошек попадает на поле, где находится мышка, то мышке спасения нет. Требуется написать программу, которая по заданному начальному положению мышки и кошек определяет, может ли мышка спастись при наилучших действиях кошек, направленных на ее поимку. Входные данные На первой строке находятся натуральные числа n и m, не превосходящие 100. Предполагается, что n - количество строк на поле, а m - количество столбцов. Во второй строке находится число k, не превосходящее 10, которое задает для данного поля количество тестовых случаев. В последующих k строках находятся начальные положения мышки и кошек, для каждого из которых требуется ответить на вопрос задачи. Положения задаются указанием двух чисел, первое из которых - номер строки, а второе, номер столбца. Сначала задаются положение мышки, затем положение первой кошки, затем - второй. Числа в одной строке разделяются символом "пробел". Выходные данные Вам следует вывести k строк с ответами для каждого из тестовых случаев. Ответ должен быть YES, если мышка спасается либо NO в противном случае. А это то что я надумал: var a:array[1..1000]of integer; x,b,k,i,j,h:integer; function dog(x,y,x1,y1,x2,y2:integer):string; var YES,NO:string; begin if(x=1)or(y=1)then dog:='YES' else begin if((x=y)and(x1=y1)and(x2=y2)and(x<x1)and(x<x2)and(y<y1)and(y<y2))or ((x=y)and(x1=y1)and(x2=y2)and(x>x1)and(x>x2)and(y>y1)and(y>y2)) then dog:='YES' else dog:='NO'; end; end; begin readln(x,b); readln(k); h:=6*k; begin for i:=1 to h do read(a[ i ]); end; for j:=1 to k do begin write(dog(a[1],a[2],a[3],a[4],a[5],a[6])); end; readln; readln; end. заранее спасибо:-) (Сообщение отредактировал KMA 25 марта 2009 10:08)
|
Всего сообщений: 6 | Присоединился: март 2009 | Отправлено: 24 марта 2009 19:52 | IP
|
|
KMA
Долгожитель
|

Прикольная задача. Только вот код по нормальному оформить и еще комментарии поставить. Кстати - dog по английски собака. Название функции я не понял, собстенно как и саму программу. Поэтому распиши все как следует. А лучше сам алгоритм нахождения правильного ответа.
|
Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 25 марта 2009 10:06 | IP
|
|
darika
Новичок
|
Плиз помогите с задачкой.. Определить принадлежит ли заданная точка Х кольцу с центром (2,3) и R1=5 R2=7 а) Х(4,1) б)Х(-4,3) в) Х(-5,-1) пожалуйста...мне оч срочно нужно!!! (Сообщение отредактировал darika 25 марта 2009 18:13)
|
Всего сообщений: 4 | Присоединился: март 2009 | Отправлено: 25 марта 2009 18:11 | IP
|
|
93NeRO93
Новичок
|

вроде так но опять же серв валит var Arr: array of Boolean; a:array[1..6]of integer; x,y,k,i,j,h:integer; function cat_mouse(a,b,a1,b1,a2,b2:integer): Boolean; begin RESULT:=true; if (a=1) or (b=1) then // проверка не находится ли мышь на краю поля result:=true else if ((a=a1)and(a1=a2)) and ((b=b1)and (b1=b2)) then // проверка не находятся ли они на одной точке на одной точке RESULT:=false else if((a=b)and(a1=b1)and(a2=b2)) //проверка находятся ли они на одной диагонали and ((a>a1)and(a<a2))or ((a<a1)and(a>a2)) //проверка расположения мышки относительно котов then RESULT:=false else result:=true; end; begin readln(x,y); readln(k); SetLength(Arr, k); for i:=1 to k do begin for j:=1 to 6 do read(a[j]); Arr[k - 1] := cat_mouse(a[1],a[2],a[3],a[4],a[5],a[6]); end; for I := 0 to High(Arr) do if Arr[ I ] then if I=High(Arr) then write('YES') else writeln('YES') else if I=High(Arr) then write('NO') else writeln('NO'); SetLength(Arr, 0); readln; readln; end. (Сообщение отредактировал KMA 26 марта 2009 19:59)
|
Всего сообщений: 6 | Присоединился: март 2009 | Отправлено: 25 марта 2009 18:20 | IP
|
|
93NeRO93
Новичок
|

дарика пойми здесь не решают задачи здесь помогают их решить
|
Всего сообщений: 6 | Присоединился: март 2009 | Отправлено: 25 марта 2009 18:26 | IP
|
|
darika
Новичок
|
93NeRO93 Теперь буду знать...А не подскажешь где их могут решить???
|
Всего сообщений: 4 | Присоединился: март 2009 | Отправлено: 25 марта 2009 18:32 | IP
|
|
93NeRO93
Новичок
|

решают только за деньги(((((((
|
Всего сообщений: 6 | Присоединился: март 2009 | Отправлено: 25 марта 2009 18:38 | IP
|
|
darika
Новичок
|
я эт знаю...а где не знаешь?
|
Всего сообщений: 4 | Присоединился: март 2009 | Отправлено: 25 марта 2009 18:39 | IP
|
|
93NeRO93
Новичок
|

в гугле поищи он всё найдёт
|
Всего сообщений: 6 | Присоединился: март 2009 | Отправлено: 25 марта 2009 21:11 | IP
|
|
KMA
Долгожитель
|

93NeRO93 Так, давай по порядку. Во-первых, что означает x,y в твоей проге. Я кроме их считывание нигде не вижу приминения. Что значит k? Далее, есть у тебя ТОЧНЫЙ алгоритм, который однозначно определяет исход, или нет такого алагоритма. Потому что по большей части у тебя там написано не понятно что, наподобии такого:
Code Sample:
if I=High(Arr) then write('YES') else writeln('YES')
Совершенно не понятен ход твоих мыслей. Если нет алгоритма, тогда можем вместе подумать над решением.
|
Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 26 марта 2009 20:15 | IP
|
|
|