Вводится матрица a(m,n) из 0 и 1. Найти в ней прямоугольную подматрицу из одних единиц максимального размера +3 задачи - Turbo Pascal
Формулировка задачи:
- Вводится матрица a(m,n) из 0 и 1. Найти в ней прямоугольную подматрицу из одних единиц максимального размера (т.е. с максимальным произведением высоты на длину).
- N серых и M белых мышей сидят по кругу. Кошка ходит по кругу по часовой стрелке и съедает каждую S -тую мышку. В первый раз счет начинается с серой мышки. Составить алгоритм определяющий по- рядок в котором сидели мышки, если через некоторое время осталось K серых и L белых мышей.
- Ввести три числа а,b,с. 1). Представить a в виде суммы минимального числа целых слагаемых x[i], каждое из которых лежит на отрезке [b,c]. 2). Можно ли представить число а таким образом, чтобы k а = х[1] * x[2] * ... * x[k] = П x[i], i>=1, i=1 где b<=x[i]<=c, х[i], а, в, с - целые. Лучшим считается алгоритм находящий такое представление с наименьшим числом множителей. Предусмотреть вариант, когда такого представления не существует. Ввести три числа а,b,с. 1). Представить a в виде суммы минимального числа целых слагаемых x[i], каждое из которых лежит на отрезке [b,c]. 2). Можно ли представить число а таким образом, чтобы k а = х[1] * x[2] * ... * x[k] = П x[i], i>=1, i=1 где b<=x[i]<=c, х[i], а, в, с - целые. Лучшим считается алгоритм находящий такое представление с наименьшим числом множителей. Предусмотреть вариант, когда такого представления не существует.
- На олимпиаду прибыло N человек. Некоторые из них знакомы меж- ду собой.Можно ли опосредованно перезнакомить их всех между собой? (Незнакомые люди могут познакомиться только через общего знакомо- го)..
Был бы рад хотя бы за одну решенную задачу...
Могу предложить рублей 50 за задачу))
Есть предлжения?
Ну???
Решение задачи: «Вводится матрица a(m,n) из 0 и 1. Найти в ней прямоугольную подматрицу из одних единиц максимального размера +3 задачи»
textual
Листинг программы
uses crt; type man = record acq: integer; //значения у людей friends: set of byte; //список знакомств каждого flag: boolean; //отметка уже познакомившихся end; var a: array [1..100] of man; i,j,k,n: integer; begin write('Количество человек: '); readln(n); for i:=1 to n do //присваиваем людям числа begin write('A[',i,']= '); readln(a[i].acq); if a[i].acq>=n then begin writeln('Всех перезнакомить нельзя'); halt; end; end; for i:=1 to n do //начинаем перебор begin k:=0; if a[i].acq=0 then //если человеку нужно выполнить 0 знакомств begin a[i].flag:=true; // свою миссию он выполнил, помечаем continue; end; //иначе for j:=1 to a[i].acq+k do // для i-го человека заводим знакомства, равные его числу if j=i then inc(k) else if not (j in a[i].friends) then // j-го человеку еще нет в списке знакомств i-го человека begin dec(a[j].acq); //у j-го человека отмечаем тоже состоявшееся знакомство include(a[i].friends,j); //добавляем j-го человека в список друзей i-ому end; if a[i].acq=0 then //если человеку осталось выполнить 0 знакомств a[i].flag:=true; //свою миссию он выполнил, помечаем end; k:=0; for i:=1 to n do //сравниваем количество знакомств между всеми людьми for j:=1 to n do if a[i].friends=a[j].friends then inc(k); if k=n then writeln('Всех перезнакомить возможно') else writeln('Всех перезнакомить нельзя'); end.
Объяснение кода листинга программы
- Вводится матрица a(m,n) из 0 и 1.
- Создается тип man, который представляет запись с тремя полями: acq (целое число), friends (множество байтов) и flag (логическое значение).
- Создается переменная a, которая представляет матрицу из 100 записей типа man.
- Считывается количество людей n.
- Для каждого человека i от 1 до n выполняется следующая последовательность действий:
- Выводится сообщение
A[
,i,']=` и считывается значение a[i].acq. - Если a[i].acq>=n, выводится сообщение
Всех перезнакомить нельзя
и прерывается выполнение программы. - Иначе, начинается цикл перебора j от 1 до a[i].acq+k.
- Если j=i, увеличивается значение k.
- Если не j в a[i].friends, выполняется следующая последовательность действий:
- Выводится сообщение
A[
,i,']=` и считывается значение a[i].acq. - Если a[i].acq=0, помечается, что задача выполнена, и выполняется команда continue.
- Иначе, уменьшается значение a[j].acq и добавляется j в a[i].friends.
- Если a[i].acq=0, помечается, что задача выполнена, и выполняется команда continue.
- Выводится сообщение
- Сравнивается количество знакомств между всеми людьми.
- Выводится сообщение
Всех перезнакомить возможно
илиВсех перезнакомить нельзя
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д