Предмет: Информатика,
автор: coolstepanov1999
Помогите решить задачу!Нужно написать программу
Задача 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 - иначе.
Ответы
Автор ответа:
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.
в ней должны быть равны элементы стоящие в одной побочной диагонале. всего побочных диагоналей 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.
Похожие вопросы
Предмет: Литература,
автор: Аноним
Предмет: Математика,
автор: ddeieiridndjekwkw
Предмет: Информатика,
автор: Danila121709
Предмет: Литература,
автор: chaynikova03
Предмет: Обществознание,
автор: KOT694