Цветной дождь - 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
на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д