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

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

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

Студворк — интернет-сервис помощи студентам
Подсчитать число перестановок из чисел 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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.04.2016, 14:52
Ответы с готовыми решениями:

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

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

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

1
Модератор
Эксперт функциональных языков программирования
3136 / 2283 / 469
Регистрация: 26.03.2015
Сообщений: 8,885
08.04.2016, 17:53
Задача заключается в том, чтобы найти количество перестановок, удовлетворяющих некому условию. Прямо так и пишем:
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.04.2016, 17:53
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru