Форум программистов, компьютерный форум, киберфорум
Алгоритмы
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 08.04.2016
Сообщений: 1
1

С++ программирование массивы дискретная математика

08.04.2016, 14:52. Показов 738. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Подсчитать число перестановок из чисел 1,2,…, N<=15, в которых разность между соседними числами больше 2.
Помогите, пожалуйста, составить алгоритм

Добавлено через 21 минуту
Исправьте код, пожалуйста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
// ConsoleApplication3.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include "stdafx.h"
#include <iostream>
#include <stdio.h>
#include <conio.h>
using namespace std;
 
int X[15];
int N;
void Swap(int a, int b)
{
int t = X[a];
X[a] = X[b];
X[b] = t;
}
int kol = 0;
 
void Generate(int k)
{
int b = -1;
if (k == N)
{
for (int i = 1; i < N; i++)
if ((abs(X[i] - X[i - 1])) <= 2) {
b = 0;
break;
}
else b = 1;
 
if (b == 1) {
for (int i = 0; i < N; i++)
cout«X[i]«" ";
cout«"\n";
kol++;
}
}
else
{
for (int j = k; j<N; j++)
{
Swap(k, j);
Generate(k + 1);
Swap(k, j);
}
}
 
}
 
int main()
{
std::cout«"N=";
std::cin»N;
for (int i = 0; i < N; i++)
X[i] = i + 1;
Generate(0);
cout«"\n"«kol;
_getch();
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.04.2016, 14:52
Ответы с готовыми решениями:

Дискретная математика
Добрый всем день! Сейчас на 1 курсе изучаем дискретную математику. Вещь от обычного понятия...

Дискретная математика и программирование
Здравствуйте. Учусь на первом курсе в политехе на программиста. Мы изучаем в данный момент C++...

Дискретная математика - ложная наука. Математика должна быть радикально изменена
Вопрос для всех: Где источник числовой информации для практических целей? Математиков, решающих...

Математика для программиста, Выш.мат, Дискретная математика, Мат.Статистика
Всем качественного контента, дело такое, сижу на 3м курсе.. В Бикини ботоме... По Прог. Обуч-я...

1
Модератор
Эксперт функциональных языков программирования
3051 / 2193 / 459
Регистрация: 26.03.2015
Сообщений: 8,469
08.04.2016, 17:53 2
Задача заключается в том, чтобы найти количество перестановок, удовлетворяющих некому условию. Прямо так и пишем:
Haskell
1
solve n = permutations [1..n] |> filter cond |> length
берём все перестановки,
затем оставляем удовлетворяющие условию
затем подсчитываем

Теперь определимся с условием:
Haskell
1
cond x = tail x |> zipWith (-) x |> map abs |> all (>2)
отбрасываем первый элемент
и попарно комбинируем с исходным списком, используя функцию вычитание
(получаем список разностей соседних элементов)
преобразуем разности в модуль разности
проверяем, что все элементы (модули разности) больше 2
(таким образом, для каждой перестановки cond возвращает true или false)

Вот и весь алгоритм, разбитый на небольшие подзадачи, каждую из которых можно реализовывать и проверять! отдельно.

Например, так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int Solve(int n)
{
    int[] a = new int[n];
    for(int i = 0; i < a.Length; i++)
        a[i] = i + 1;
    int count = 0;
    do
    {
        if(Cond(a))
            count++;
    }
    while(NextPermutation(a));
    return count;
}
 
bool Cond(int[] a)
{
    for(int i = 1; i < a.Length; i++)
        if(Math.Abs(a[i] - a[i-1]) <= 2)
            return false;
    return true;        
}
(2 строки превратились в 20 из-за возни с низкоуровневыми деталями)
0
08.04.2016, 17:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.04.2016, 17:53
Помогаю со студенческими работами здесь

Дискретная математика
Может кто-нибудь знает как решить задания? 1) Найти член разложения бинома (x^2 + 2/ 5x) ^8 ,...

дискретная математика.
несколько задач по дискретной математике. помогите пожалуйста решить 1, 4, 5, 6 и 7 задачи.. 1...

Дискретная математика
Вариант 6. В первом задании построить график отношений С1 с С4 Второе аналогично Третье найти...

дискретная математика
Помогите решить(((


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru