IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Массивы, задачка... I need help !
Valkirie
сообщение 17.03.2005 11:12
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 36
Пол: Женский

Репутация: -  0  +


Ребята, помогите, плииз.... чё то я не совсем понимаю...что тут к чему... sad.gif

Вводится прямоугольный массив, состоящий из 0 и 1. Можно ли в нем выбрать 2 строки так, чтобы в них каждый столбец содержал хотя бы одну единицу. Динамическими массивами не пользоваться.

Вход
В первой строке входа дано количество строк M и количество столбцов N в массиве. Далее следуют MxN элементов массива в следующем порядке: сначала элементы первой строки, затем элементы второй строки и т.д. (0 либо 1, по одному в каждой строке).

Выход
На выход напечатать yes в случае положительного ответа и no в случае отрицательного.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 17.03.2005 21:22
Сообщение #2


Гость






Цитата
Если бы я ещё понимала, чего от меня хотят...

Допустим, у тебя есть матрица:
0 0 0 1 1 0
0 1 1 1 1 0
1 1 1 1 0 0
Это должно выдать "нет" потому что нет в 6-ой позиции единицы нигде...
В общем случае - надо как бы "складывать" строки: "0" + "0" = "0", все остальные комбинации = "1", и смотреть, есть ли 2 строки, при "сложении" которых получаются ВСЕ единицы...

Добавлено позже:
Я вот тут подумал, а нужно ли заморачиваться с LongInt-ами? Можно ведь сделать еще проще (тут число столбцов ограничено не 32, как с LongInt-ами, а 255):
Код
Type TSet = Set Of Byte;
Var
 Arr: array[1 .. 100] of TSet;
 i, j, m, n, x: integer;
begin
{ Читаем M, N }
for i := 1 to m do
  begin
    Arr[i] := [];
    for j := 1 to n do
      begin
        readln(x); { Читаем очередное число }

        { в список заносим только столбцы содержащие 1-цы }
        if x = 1 then Arr[i] := Arr[i] + [j];
      end;
  end;
{ Заполнила массив множеств, теперь - перебор... }
for i := 1 to m-1 do
  for j := i+1 to m do
    { проверка, все ли столбцы находятся в объединенном списке строк i и j? }
    if Arr[i] + Arr[j] = [1 .. n] then
      writeln('строки ', i, ' и ', j, 'содержат 1-цы во всех столбцах')
end.
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 11:07
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"