Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Найти число компонент связностей. Найти число компонент связностей. 
:(
    Опции темы
castle29
Дата 11.5.2013, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Пишу в Visual Studio 2010 C++.
Вообще мне надо посчитать количество граней в графе, который задаётся матрицей смежности. Матрицу смежности забиваю в двумерный массив. Нахожу количество рёбер. 
Код

private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
    int N=3,  kv=3, kr=0, kg,ks=0  ;
    int mas[3][3];    
     
    mas[0][0] = Convert::ToInt32(richTextBox2->Text); 
    mas[0][1] = Convert::ToInt32(richTextBox1->Text);
    mas[0][2] = Convert::ToInt32(richTextBox3->Text);
    mas[1][0] = Convert::ToInt32(richTextBox4->Text);
    mas[1][1] = Convert::ToInt32(richTextBox5->Text);
    mas[1][2] = Convert::ToInt32(richTextBox6->Text);
    mas[2][0] = Convert::ToInt32(richTextBox7->Text);
    mas[2][1] = Convert::ToInt32(richTextBox8->Text);
    mas[2][2] = Convert::ToInt32(richTextBox9->Text);

    
//ищем число рёбер
for (int k=1; k<N; k++)
{ for (int l=0; l< k;l++)
{
if (mas[k][l]>0)
kr++;}}      

//ищем число копм. связностей
//.....

//считаем кол-во граней
kg=1+ks-kv+kr;
//выводим
        label1->Text= String::Format("Количество граней:{0}", kg);

         }

Я нашла вот такой код для нахождения компонент связностей
Код

std::vector<std::vector<int> > gr;
std::vector<bool> used;
 
void dfs(int v)
{
    used[v] = true;
    for (int i = 0; i < gr[v].size(); ++i)
    {
         if (!used[gr[v][i]])
             dfs(gr[v][i]);
    }
}


как его переделать под мою программу?
Надо очень срочно!!!!!!!!!К понедельнику!!
Буду очень благодарна!!
PM MAIL   Вверх
akizelokro
Дата 12.5.2013, 06:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Крокодил
**


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

Репутация: нет
Всего: 5



Вместо "gr[v].size" написать "3", потом в теле функции вместо "gr" написать "mas" и удалить первую строчку в рассматриваемом коде?
ну, и, конечно, vector used переписать как массив[3].
или они в vector<bool> побитно рассчитывают число?

Это сообщение отредактировал(а) akizelokro - 12.5.2013, 06:44


--------------------
a = a + b; b = a - b; a = a - b;
PM MAIL   Вверх
akizelokro
Дата 12.5.2013, 07:07 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











если, конечно, взводом битов в "used", это самое число не подсчитвывают)

Этот ответ добавлен с нового Винграда - http://vingrad.com
  Вверх
castle29
Дата 12.5.2013, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо, попробую. 
PM MAIL   Вверх
castle29
Дата 15.5.2013, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Ничего не получается=/////
Как это фенкция dfs вообще работает???
Может кто-нибудь подскажет как лучше сделать этот поиск??
Пожалуйста!!!!!!!
PM MAIL   Вверх
castle29
Дата 17.5.2013, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Всё разобралась. 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




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


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

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