Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти і науки, молоді та спорту України
Вінницький національний технічний університет
Інститут Інформаційних Технологій та Комп’ютерної Інженерії
Лабараторна робота № 3
з дисципліни: Дискретна математика.
Тема: Розробка алгоритму і програми для розв’язання задачі про покриття на множинах методом мінімального стовпчика - максимального рядка.
м.Вінниця 2013
Мета: набути навиків застосування методу мінімального стовпчика - максимального рядка для побудови покриття на множинах.
Порядок виконання роботи:
Ознайомитися з методом мінімального стовпчика - максимального рядка.
Отримати варіант індивідуального завдання для виконання.
Розробити схему алгоритму побудови покриття методом мінімального стовпчика - максимального рядка.
Розробити програму побудови покриття методом мінімального стовпчика - максимального рядка.
Для заданого варіанту принести результати тестування програми у покроковому режимі.
Зробити висновки про результати застосування цього методу для побудови покриття, відзначити його особливість і відмінність від відомих вам методів
Завдання для виконання №25
3.Блок-схема
Рисунок 1.
4. Приклади тестування програми
/
5. Висновок: Побудовано алгоритм, блок-схему програми, розроблено програму мовою C++ що реалізує побудову покриття методом мінімального стовпчика - максимального рядка.
6.Додаток ( Лістинг програми що реалізує мінімального стовпчика - максимального рядка.)
#include <iostream>
#include <conio.h>
#include <stdio.h>
main()
{
setlocale(LC_ALL,"Ukrainian");
int A[100][100],B[100]={0},C[100]={100},K[100]={0};
int a,b,i,j,n,n1,p,l,cina;
char ch[12]="АБВГДЕЖ ";
printf("ВВЕДiТb КiЛЬКiСТЬ МНОЖИН: \n");
scanf("%d",&a);
printf("ВВЕДiТb КiЛЬКiСТЬ СТОВПЦiВ:\n");
scanf("%d",&b);
printf(" ");
for(i=0;i<b;i++)
{
printf(" ");
printf("%d",i+1);
}
printf(" цiна");
printf("\n");
for (i=0;i<a;i++)
{
printf("\n");
printf("%c",ch[i]);
for(j=0;j<=b;j++)
{
printf(" ");
scanf("%d",&A[i][j]);
}
}
n1=0;l=0; cina=0;
for(j=0;j<a;j++)
{
n=0;
for(i=0;i<b;i++)
{
if(A[j][i]==1) n++;
if(n>n1) {n1=n; p=j;
}
}
}
printf("\n");
while(l!=b)
{
for(i=0;i<b;i++)
{
if(C[i]!=i)
{
if(A[p][i]==1)
{
C[i]=i;l++;
}
}
}
cina+=A[p][b];
printf("%c",ch[p]);
n1=0;
for(j=0;j<a;j++)
{
n=0;
for(i=0;i<b;i++)
{
if(i!=C[i])
{
if(A[j][i]==1) n++;
if(n>n1)
{
n1=n; p=j;
}}
}
}
}
printf(" - цiна - %d\n",cina);
getch();
}
Ви не можете залишити коментар. Для цього, будь ласка, увійдіть
або зареєструйтесь.
Ділись своїми роботами та отримуй миттєві бонуси!
Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!