Помогите решить задачу!Нужно написать программу Задача C. Хорошая таблица Имеется...

0 голосов
79 просмотров

Помогите решить задачу!Нужно написать программу
Задача C. Хорошая таблица
Имеется прямоугольная целочисленная таблица размером N•M. «Путём» в этой таблице назовём последовательность из N+M-1 клеток, которая начинается из клетки (1, 1), заканчивается клеткой (N, M) и любые две идущие подряд клетки в этой последовательности имеют общую сторону. Назовём таблицу «хорошей», если сумма чисел в клетках каждого пути в этой таблице одна и та же. Определить, является ли данная таблица «хорошей».

Входные данные

Во входном файле INPUT.TXT записаны не более 10 таблиц. Запись каждой таблицы содержит в первой строке два числа — количество строк N и количество столбцов M (1 ≤ N, 1 ≤ M, N•M ≤ 30000). В следующих N строках содержатся по M чисел — значения элементов таблицы — целые числа от -32000 до 32000. Последняя строка входного файла содержит значения 0 0.

Выходные данные

В единственную строку выходного файла OUTPUT.TXT нужно вывести строку из символов Y и N. Длина строки равна количеству таблиц во входном файле. Символ Y обозначает что соответствующая таблица «хорошая», N - иначе.


Информатика (119 баллов) | 79 просмотров
0

Почти

0

Последняя

Дан 1 ответ
0 голосов

Я решала эту задачу ...с горем - по - полам .. простите :(..
в ней должны быть равны элементы стоящие в одной побочной диагонале. всего побочных диагоналей n+m-1. 
достаточно хранить первую строку и последний столбец,


var n, m, i, j, b : integer;
 a : array [1..30000] of integer;
  t : boolean; begin assign(input,'input.txt');
reset(input);
 assign(output,'output.txt');
rewrite(output);
  readln(n,m);
 while n+m>0 do
 begin
 t:=true;
  for j:=1 to m do
 read(a[j]);
 for i:=2 to n do begin
 for j:=1 to m-1 do begin
  read(b);
 t:=t and (b=a[i+j-1]) end;
 read(b);
 a[m+i-1]:=b end;
 if t then write('Y') else write('N');
 readln(n,m) end;
 close(output) ;
end.