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

C++

01.11.2020, 15:45. Показов 393. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите объединить 3 кода в один
#include <iostream>
#include <vector>
#include <stdio.h>
using namespace std;
void swap(int* a, int i, int j)
{
int s = a[i];
a[i] = a[j];
a[j] = s;
}
bool NextSet(int* a, int n, int m)
{
int j;
do // повторяем пока не будет найдено следующее размещение
{
j = n - 1;
while (j != -1 && a[j] >= a[j + 1]) j--;
if (j == -1)
return false; // больше размещений нет
int k = n - 1;
while (a[j] >= a[k]) k--;
swap(a, j, k);
int l = j + 1, r = n - 1; // сортируем оставшуюся часть последовательности
while (l < r)
swap(a, l++, r--);
} while (j > m - 1);
return true;
}
void Print(int* a, int n) // вывод размещения
{
static int num = 1; // номер размещения
cout.width(3); // ширина поля вывода номера размещения
cout « num++ « ": ";
for (int i = 0; i < n; i++)
cout « a[i] « " ";
cout « endl;
}
int main()
{
int n, m, * a;
cout « "N = ";
cin » n;
cout « "M = ";
cin » m;
a = new int[n];
for (int i = 0; i < n; i++)
a[i] = i + 1;
Print(a, m);
while (NextSet(a, n, m))
Print(a, m);
cin.get(); cin.get();
return 0;
}

using namespace std;

bool increase(vector<int> & vec, const int n)
{
for (int i = vec.size() - 1; i >= 0; i--)
if (vec[i] + 1 <= n) {
if (i != vec.size() - 1 && vec[i + 1] == vec[i] + 1)
continue;
++vec[i];

for (int j = i + 1; j < vec.size(); j++)
vec[j] = vec[j - 1] + 1;
return true;
}
return false;
}

void print(const vector<int> & vec)
{
for (size_t i = 0; i != vec.size(); i++)
cout « vec[i] « " ";
cout « endl;
}

int main()
{
setlocale(LC_CTYPE, "");
// сочетания из n по k без повторений
int n = 10;
int k = 8;
vector<int> vec(k);
for (size_t i = 0; i != k; i++)
vec[i] = i + 1;

print(vec);

while (increase(vec, n))
print(vec);

return 0;
}


typedef unsigned long long ull;
ull was_here[100][100];

ull rec(ull n, ull k)
{
if (n == k)
was_here[n][k] = 1;
else if (k == 1)
was_here[n][k] = n;
else
was_here[n][k] = rec(n - 1, k - 1) + rec(n - 1, k);

return was_here[n][k];
}

int main()
{
ull n, k;
scanf_s("%llu%llu", &n, &k);
printf("%llu", rec(n, k));
return 0;
}

Добавлено через 4 минуты
Это формулы комбинаторике, основные переменные N и K
0
01.11.2020, 15:45
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru