Цветной дождь - Turbo Pascal
Формулировка задачи:
В Банановой республике очень много холмов, соединенных мостами. На химическом заводе произошла авария, в результате чего испарилось экспериментальное удобрение "зован". На следующий день выпал цветной дождь, причем он прошел только над холмами. В некоторых местах падали красные капли, в некоторых - синие, а в остальных - зеленые, в результате чего холмы стали соответствующего цвета. Президенту Банановой республики это понравилось, но ему захотелось покрасить мосты между вершинами холмов так, чтобы мосты были покрашены в цвет холмов, которые они соединяют. К сожалению, если холмы разного цвета, то покрасить мост таким образом не удастся. Посчитайте количество таких "плохих" мостов.
Входные данные
В файле INPUT.TXT в первой строке записано N (0 < N <= 100) - число холмов. Далее идет матрица смежности, описывающая наличие мостов между холмами (1-мост есть, 0-нет). Предпоследняя строка пустая, а в последней строке записано N чисел, обозначающих цвет холмов: 1 - красный; 2 - синий; 3 - зеленый.
Выходные данные
В файл OUTPUT.TXT вывести количество "плохих" мостов.
Пример
№ INPUT.TXT OUTPUT.TXT
1 7
0 1 0 0 0 1 1
1 0 1 0 0 0 0
0 1 0 0 1 1 0
0 0 0 0 0 0 0
0 0 1 0 0 1 0
1 0 1 0 1 0 0
1 0 0 0 0 0 0
1 1 1 1 1 3 3 4
Решение задачи: «Цветной дождь»
textual
Листинг программы
- var m:array[1..100] of byte;
- smez:array[1..100,1..100] of byte;
- i,j,k,n : integer;
- begin
- Assign(input,'INPUT.TXT');
- Reset(input);
- Assign(output,'OUTPUT.TXT');
- Rewrite(output);
- Read(n);
- for i:=1 to n do begin
- for j:=1 to n do
- Read(smez[i,j]);
- ReadLn;
- end;
- ReadLn;
- for i:=1 to n do Read(m[i]);
- k:=0;
- for i:=1 to n do
- for j:=i+1 to n do
- if smez[i,j]=1 then
- if m[i]<>m[j] then Inc(k);
- WriteLn(k)
- end.
Объяснение кода листинга программы
- Создается переменная
m
, которая представляет собой массив байтов размером от 1 до 100. - Создается переменная
smez
, которая представляет собой двумерный массив байтов размером от 1 до 100 на 1 до 100. - Создаются три переменные
i
,j
иk
, которые представляют собой целые числа. - Задается файл ввода
input
и файл выводаoutput
с именамиINPUT.TXT
иOUTPUT.TXT
соответственно. - В файле вывода
output
сначала сбрасывается буфер, а затем записывается начальное состояние. - Читается значение переменной
n
, которая представляет собой количество строк для чтения из файла ввода. - Для каждой строки в файле ввода читается значение переменной
smez[i,j]
, гдеi
иj
представляют собой индексы строк и столбцов соответственно. - После чтения всех значений
smez[i,j]
читается значение переменнойm[i]
. - Переменная
k
инициализируется нулем. - Для каждой строки в файле ввода выполняется следующая проверка: если значение
smez[i,j]
равно единице, а значенияm[i]
иm[j]
различны, то переменнаяk
увеличивается на единицу. - Выводится значение переменной
k
на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д