Цветной дождь - 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.

Объяснение кода листинга программы

  1. Создается переменная m, которая представляет собой массив байтов размером от 1 до 100.
  2. Создается переменная smez, которая представляет собой двумерный массив байтов размером от 1 до 100 на 1 до 100.
  3. Создаются три переменные i, j и k, которые представляют собой целые числа.
  4. Задается файл ввода input и файл вывода output с именами INPUT.TXT и OUTPUT.TXT соответственно.
  5. В файле вывода output сначала сбрасывается буфер, а затем записывается начальное состояние.
  6. Читается значение переменной n, которая представляет собой количество строк для чтения из файла ввода.
  7. Для каждой строки в файле ввода читается значение переменной smez[i,j], где i и j представляют собой индексы строк и столбцов соответственно.
  8. После чтения всех значений smez[i,j] читается значение переменной m[i].
  9. Переменная k инициализируется нулем.
  10. Для каждой строки в файле ввода выполняется следующая проверка: если значение smez[i,j] равно единице, а значения m[i] и m[j] различны, то переменная k увеличивается на единицу.
  11. Выводится значение переменной k на экран.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4 из 5
Похожие ответы