![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Valkirie |
![]() ![]()
Сообщение
#1
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 36 Пол: Женский Репутация: ![]() ![]() ![]() |
Ребята, помогите, плииз.... чё то я не совсем понимаю...что тут к чему...
![]() Вводится прямоугольный массив, состоящий из 0 и 1. Можно ли в нем выбрать 2 строки так, чтобы в них каждый столбец содержал хотя бы одну единицу. Динамическими массивами не пользоваться. Вход В первой строке входа дано количество строк M и количество столбцов N в массиве. Далее следуют MxN элементов массива в следующем порядке: сначала элементы первой строки, затем элементы второй строки и т.д. (0 либо 1, по одному в каждой строке). Выход На выход напечатать yes в случае положительного ответа и no в случае отрицательного. |
![]() ![]() |
hiv |
![]()
Сообщение
#2
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 660 Пол: Мужской Реальное имя: Михаил Репутация: ![]() ![]() ![]() |
Что-то тут условие не полное... Наверно массив состоит из чисел содержащих цифры 0 и 1.
-------------------- Никогда не жадничай. Свои проблемы с любовью дари людям!
|
volvo |
![]()
Сообщение
#3
|
Гость ![]() |
Цитата(Valkirie @ 17.03.05 10:12) Динамическими массивами не пользоваться. Условие совершенно излишнее... Во-первых, в TP просто нет динамических массивов, ну а во-вторых, здесь ВООБЩЕ никакие массивы не нужны. Все, что нужно - прочесть 2 значения (M и N), и сделать 2 вложенных цикла (проверяя, есть ли в M-ой "строке" хотя бы одна единица. Если есть - то увеличить счетчик). Ну а потом - просто проверить, содержится ли в счетчике число >= 2 ... |
hiv |
![]()
Сообщение
#4
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 660 Пол: Мужской Реальное имя: Михаил Репутация: ![]() ![]() ![]() |
Volvo, прочти еще раз что было написано:
Цитата чтобы в них каждый столбец содержал хотя бы одну единицу я так это понял - что в каждом элементе строки массива должна быть минимум одна еденица. -------------------- Никогда не жадничай. Свои проблемы с любовью дари людям!
|
volvo |
![]()
Сообщение
#5
|
Гость ![]() |
![]() Задача 8018 |
Valkirie |
![]()
Сообщение
#6
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 36 Пол: Женский Репутация: ![]() ![]() ![]() |
Угу..вот такой вот попандос....
ладно, спасибо ребят.. попробую что-нить сделать |
volvo |
![]()
Сообщение
#7
|
Гость ![]() |
Valkirie, ну нельзя динамическими, пользуйся статическим... Например, объяви массив мз 100 LongInt-ов (назовем его Arr) и считай каждую "строку" матрицы двоичным представлением числа. Загоняешь эти самые "строки" в массив LongInt-ов и потом перебором:
Код if (Arr[i] or Arr[j]) = ($FFFFFFFF shr (32-N)) then { такая пара "строк" содержит 1-цы в каждом столбце } Естественно, это накладывает ограничения на число столбцов матрицы: оно не должно быть больше 32. |
Valkirie |
![]()
Сообщение
#8
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 36 Пол: Женский Репутация: ![]() ![]() ![]() |
:p2: чего-то у меня с головой наверное не то...
т.е. если массив прямоугольный - то он многомерный...или нет... мне его как объявлять...? так ? Код const maxN=32; maxM=32; var Arr:array [1..maxM] of array [1..maxN] of integer; но тогда с условием лажа получается... блин этот универ, вечно нифига не объяснят - и решайте... <_< |
klem4 |
![]()
Сообщение
#9
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Объявление двумерного массива (прямоугольной матрицы)
Код const n=5; m=4; var x:array[1..n,1..m] of integer; Сообщение отредактировано: klem4 - 17.03.2005 20:54 -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
volvo |
![]()
Сообщение
#10
|
Гость ![]() |
Ну зачем же так круто? Оба измерения - не надо
![]() Достаточно одного... Смотри: Код Const maxN = 32; Var Arr: array[1 .. 100] of LongInt; begin { Читаем M, N } for i := 1 to m do for j := 1 to n do begin readln(x); { Читаем очередное число } if x = 1 then Arr[i] := Arr[i] or $1; Arr[i] := Arr[i] shl 1 end; { Заполнила массив чисел, теперь - перебором их... } end. |
Valkirie |
![]()
Сообщение
#11
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 36 Пол: Женский Репутация: ![]() ![]() ![]() |
Код const maxN=32; maxM=32; var Arr:array [1..maxM, 1..maxN] of integer; N, M, i, j: integer; begin Write(''); ReadLn(M,N); for i:=1 to M do for j:=1 to N do begin Write(''); ReadLn(Arr[i,j]); end; if (Arr[i,j] or Arr[j,i]) = ($FFFFFFFF shr (32-N)) then begin WriteLn('yes'); ReadLn; end else WriteLn('no'); ReadLn end. я наверное дура полная... Так прога работает...и всё правильно выдаёт... А этот сервер пишет - что всё не правильно... volvo, сщас буду пробовать воспользоваться твоим последним советом... Пасиб :p2: |
klem4 |
![]()
Сообщение
#12
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
мне кажется это
Код if (Arr[i,j] or Arr[j,i]) = ($FFFFFFFF shr (32-N)) then должно быть в цикле... -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Valkirie |
![]()
Сообщение
#13
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 36 Пол: Женский Репутация: ![]() ![]() ![]() |
Если бы я ещё понимала, чего от меня хотят.... было-бы вообще хорошо...
|
volvo |
![]()
Сообщение
#14
|
Гость ![]() |
Цитата Если бы я ещё понимала, чего от меня хотят... Допустим, у тебя есть матрица: 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. |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 3:05 |