Міністерство освіти і науки України
Полтавський національний технічний університет
імені Юрія Кондратюка
Факультет інформаційних та телекомунікаційних технологій і систем
Кафедра комп’ютерних та інформаційних технологій і систем
Розрахунково-графічна робота
з дисциплін "Основи дискретної математики"
та "Основи програмування та алгоритмічні мови"
Виконав:
Студент групи 101-ТН
Селін Ігор
Керівник:
д.т.н. Ляхов Олександр Логвинович
Полтава 2010
Постановка задачі
УМОВА ЗАДАЧІ:
Задано натуральне число n. Навести всі перестановки елементів множини , у яких жоден елемент не залишається на місці.
Перестановка
- це перевпорядкованість наборів елементів, об’єктів або функція, що задає таку перевпорядкованість.
Множина
- це деяка визначена сукупність елементів чи об’єктів.
Розв’
язання задачі
Для більш наглядного представлення даної задачі розглянемо приклад на якому розглянемо всі можливі варіанти перестановок при 3 елементах.
G={1,2,3}
(1,2,3) - Так
(1,3,2) - Ні
(2,1,3) - Так
(2,3,1) - Ні
(3,1,2) - Так
(3,2,1) - Ні
З них відповідають умові задачі лише 3 перестановки. Цього методу можна добитися послідовним здвигом вправо чисел послідовності. Перше стає на місце другого, друге на третє, останнє на перше.
Наприклад:
(1,2,3) → (3,1,2) → (2,3,1)
Алгоритм задачі
Необхідно визначити яка вхідні та проміжні дані будуть використовуватися.
Насамперед, n-розмірність множини, тобто факторіал. Також потрібно динамічний масив для перестановки елементів. Для прорахунку всіх можливих елементів використаємо цикл із лічильником.
Забиваем Сайты В ТОП КУВАЛДОЙ - Уникальные возможности от SeoHammer
Каждая ссылка анализируется по трем пакетам оценки: SEO, Трафик и SMM.
SeoHammer делает продвижение сайта прозрачным и простым занятием.
Ссылки, вечные ссылки, статьи, упоминания, пресс-релизы - используйте по максимуму потенциал SeoHammer для продвижения вашего сайта.
Что умеет делать SeoHammer
— Продвижение в один клик, интеллектуальный подбор запросов, покупка самых лучших ссылок с высокой степенью качества у лучших бирж ссылок.
— Регулярная проверка качества ссылок по более чем 100 показателям и ежедневный пересчет показателей качества проекта.
— Все известные форматы ссылок: арендные ссылки, вечные ссылки, публикации (упоминания, мнения, отзывы, статьи, пресс-релизы).
— SeoHammer покажет, где рост или падение, а также запросы, на которые нужно обратить внимание.
SeoHammer еще предоставляет технологию Буст, она ускоряет продвижение в десятки раз,
а первые результаты появляются уже в течение первых 7 дней.
Зарегистрироваться и Начать продвижение
Перший цикл виводить початкову комбінацію елементів {1…n}.
Другий цикл виконує nразів перестановку, яка являється циклом.
Третій цикл - робить перестановку всіх елементів крім останнього, так як він міняється з першим. Це робиться "вручну".
Четвертий цикл - виводить на дисплей результат роботи третього.
Функція swap
(
int
*
pointer
, i
nt
*
pointer
)
має два параметри - вказівники на змінні, які треба поміняти місцями. Це реалізується через третю змінну. Власне функція ніякого значення не повертає (void
).
Програма закінчується вивільненням пам’яті та поверненням повідомлення ОС про правильне закінчення роботи.
Реалізація програми
#include <iostream>
using namespace std;
void swap (int *px, int *py)
{
int temp;
temp=*px;
*px=*py;
*py=temp;
}
int main ()
{
int n=0,k;
cout<<"Enter matrix size: ";
cin>>n;
int *pNums = new int [n] ;
cout<<"{ ";
for (int j=0; j<n; j++)
{
pNums [j] =j+1;
cout<<pNums [j] <<" ";
}
cout<<"}"<<endl;
for (int y=0; y<n-1; y++)
{
for (int i=0; i<n-1; i++) {
swap (pNums [i],pNums [i+1]);
}
cout<<"{ ";
for (k=0; k<n; k++)
{cout<<pNums [k] <<" ";
}
cout<<"}"<<endl;
}
cout<<endl;
delete pNums;
cin. get ();
cin. get ();
return 0;
}
Вхідні дані: 11 - кількість елементів
Вихідні дані: всі можливі комбінації елементів у вигляді матриці.
Після закуску програми користувачу необхідно спочатку ввести розмірність матриці N. Цей процес показано далі:
Сервис онлайн-записи на собственном Telegram-боте
Попробуйте сервис онлайн-записи VisitTime на основе вашего собственного Telegram-бота:
— Разгрузит мастера, специалиста или компанию;
— Позволит гибко управлять расписанием и загрузкой;
— Разошлет оповещения о новых услугах или акциях;
— Позволит принять оплату на карту/кошелек/счет;
— Позволит записываться на групповые и персональные посещения;
— Поможет получить от клиента отзывы о визите к вам;
— Включает в себя сервис чаевых.
Для новых пользователей первый месяц бесплатно.
Зарегистрироваться в сервисе

Після введення розміру програма автоматично обчислює та виводить на екран результати:

Отже, програма виводить всі можливі комбінації - їх кількість рівна числу елементів, так як кожен з них не повинен залишатися на місці.
|