Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите решить задачу с матрицей, задача 
:(
    Опции темы
Guest
Дата 4.6.2005, 08:59 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Народ помогите решить задачу!
ДАна матрица n*N. Элементом этой матрицы может быть 1 или 0.
Если 0 - пустое место, 1- не пустое. Нужно найти кол-во прямоугольников, образованных
единичками. Прямоугольники не накладываются друг на друга и не соприкасаются.
Заранее спасибо!
  Вверх
gepard
Дата 5.6.2005, 06:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2477
Регистрация: 29.2.2004

Репутация: 2
Всего: 40



Цитата(Guest @ 4.6.2005, 08:59)
ДАна матрица n*N.

Квадратная? Тогда уж n*m, если не квадратная...
В чём проблема решения задачи? Алгоритм? Реализация?

Вообще, это в раздел "Центр помощи" ИМХО


--------------------
Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным!
© Я, Берсерк, что значит - Неистовый. 
PM MAIL WWW ICQ   Вверх
ChofCh
Дата 5.6.2005, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 27.4.2005
Где: г. Долгопрудный

Репутация: 1
Всего: 2



Количество прямоугольников равно количеству их верхних левых углов. Т.к. прямоугольники не пересекаются и не прикасаются друг к другу, то слева и сверху от л.в. угла прямоугольника должны быть нули (или границы массива). Код, котрым это можно реализовать, следущий:
Код

Const n=10
Const m=12
Private Sub main()
Dim A(0 to n-1, 0 to m-1) As Byte
Dim i as long, j as long
Dim fi as boolean, fj as boolean
Dim s as long
---------------------'здесь должен быть код, в котором матрицу заполняют
s=0
For i=0 to n-1
For j=0 to m-1
If A(i,j)=1 then
 fi=(i=0)
 If not(fi) then fi=(A(i-1,j)=0)
 fj=(j=0)
 If not(fj) then fj=(A(i,j-1)=0)
 If fi and fj then s=s+1
end if
Next j
Next i
MsgBox s
End sub


Это сообщение отредактировал(а) ChofCh - 5.6.2005, 11:05
PM MAIL ICQ   Вверх
Guest
Дата 5.6.2005, 22:19 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











мне на c/c++ нада
  Вверх
ChofCh
Дата 5.6.2005, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 27.4.2005
Где: г. Долгопрудный

Репутация: 1
Всего: 2



Эх... C++ я практически не знаю, но этот код даже я смогу перевести:
Код

s=0;
For (i=0;i<n;i++)
{
 For (j=0;j<m;j++)
 {
  If (A[i][j])!=0)
  {
   If (i==0) f=1;
   else if (A[i-1][j]==0) f=1; else f=0;
   If (j==0) f++;
   else if (A[i][j-1]==0) f++;
   If (f==2) then s++;
  }
 }
}

Объявления опущены ввиду неполноты ТЗ (неивестно, что и откуда вводится/выводится и какие на это накладываются ограничения)

Это сообщение отредактировал(а) ChofCh - 5.6.2005, 23:32
PM MAIL ICQ   Вверх
cardinal
Дата 6.6.2005, 01:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 15
Всего: 99



Цитата(Guest @ 5.6.2005, 20:19)
мне на c/c++ нада

А сразу сказать? smile


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0428 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.