Файл: Решение. Разобьем множество всех возможных выборок, удовлетворяющих заданному условию, на два непересекающихся подмножества.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 11.12.2023
Просмотров: 51
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Задание 1. Сколькими способами из колоды в 36 карт можно выбрать неупорядоченный набор из 4-х карт так, чтобы в этом наборе было бы в точности 2 карты красной масти, 2 туза?Решение.Разобьем множество всех возможных выборок, удовлетворяющих заданному условию, на два непересекающихся подмножества.
Общее число способов выбора 4-х карт, удовлетворяющих условию задачи, составляет:120+120 = 240.Задание 2. Дано множество А = {0, 3, 8, 9}.Для каждого пункта, указанного ниже, нужно найти количество объектов, а также получить сами соответствующие объекты.
Решение.Дано множество А = {0, 3, 8, 9}.
∪ {9} × ({0}×{3, 8} ∪ {3}×{0, 8} ∪ {8}×{0, 3}) == {3}×{0}×{8, 9} ∪ {3}×{8}×{0, 9} ∪ {3}×{9}×{0, 8} ∪∪ {8}×{0}×{3, 9} ∪ {8}×{3}×{0,9} ∪ {8}×{9}×{0, 3} ∪∪ {9}×{0}×{3, 8} ∪ {9}×{3}×{0, 8} ∪ {9}×{8}×{0, 3} == {(3,0,8), (3,0,9), (3,8,0), (3,8,9), (3,9,0), (3,9,8)} ∪∪ {(8,0,3), (8,0,9), (8,3,0), (8,3,9), (8,9,0), (8,9,3)} ∪∪ {(9,0,3), (9,0,8), (9,3,0), (9,3,8), (9,8,0), (9,8,3)} == {(3,0,8), (3,0,9), (3,8,0), (3,8,9), (3,9,0), (3,9,8), (8,0,3), (8,0,9), (8,3,0), (8,3,9), (8,9,0), (8,9,3), (9,0,3), (9,0,8), (9,3,0), (9,3,8), (9,8,0), (9,8,3)}.
всех сочетаний заданной длины k с повторениями элементов.Листинг кода:#include
using namespace std;
bool next_comb(int index[], const int& n, const int& m)
{
int j = m - 1;
while (index[j] == n && j >= 0)
j--;
if (j < 0)
return false;
if (index[j] >= n)
j--;
index[j]++;
if (j == m - 1)
return true;
for (int k = j + 1; k < m; k++)
index[k] = index[j];
return true;
}
int main()
{
setlocale(LC_ALL, "rus");
string char_set[] = { "aa", "bb", "cc", "dd"};
int N = sizeof(char_set) / sizeof(char_set[0]);
for (int i = 0; i < N; ++i)
std::cout << char_set[i] << " ";
std::cout << std::endl;
int n;
cin >> n;
int k = N > n ? N : n;
int* index = new int[k];
for (int i = 0; i < k; i++)
index[i] = 1;
do
{
for (int i = 0; i < n; ++i)
std::cout << char_set[index[i] - 1] << " ";
std::cout << std::endl;
} while (next_comb(index, N, n));
delete[] index;
//std::cin.get();
}
Пример работы программы:
| Среди четырех выбранных карт | |
| 2 туза черной масти и 2 карты красной масти | 2 туза красной масти и 2 карты черной масти |
| Количество способов выбрать: | |
|
|
| Число выборок заданной структуры равно: | |
| 1* = 1*120 = 120. | 1* = 1*120 = 120. |
-
Сколькими способами из множества А можно выбрать 2 различные цифры? -
Сколько различных трехзначных чисел можно записать из цифр, входящих в множество А (цифры в записи числа могут повторяться)? -
Сколько различных трехзначных чётных (нечётных) чисел можно записать из цифр, входящих в множество А (цифры в записи числа могут повторяться)? -
Сколько различных трехзначных чисел можно записать из цифр, входящих в множество А (все цифры в записи числа различны)? -
Сколько различных трехзначных чётных (нечётных) чисел можно записать из цифр, входящих в множество А (все цифры в записи числа различны)?
Решение.Дано множество А = {0, 3, 8, 9}.
-
Сколькими способами из множества А можно выбрать 2 различные цифры?
-
Сколько различных трехзначных чисел можно записать из цифр, входящих в множество А (цифры в записи числа могут повторяться)?
-
Сколько различных трехзначных нечетных чисел можно записать из цифр, входящих в множество А (цифры в записи числа могут повторяться)?
-
Сколько различных трехзначных чисел можно записать из цифр, входящих в множество А (все цифры в числе различны)?
∪ {9} × ({0}×{3, 8} ∪ {3}×{0, 8} ∪ {8}×{0, 3}) == {3}×{0}×{8, 9} ∪ {3}×{8}×{0, 9} ∪ {3}×{9}×{0, 8} ∪∪ {8}×{0}×{3, 9} ∪ {8}×{3}×{0,9} ∪ {8}×{9}×{0, 3} ∪∪ {9}×{0}×{3, 8} ∪ {9}×{3}×{0, 8} ∪ {9}×{8}×{0, 3} == {(3,0,8), (3,0,9), (3,8,0), (3,8,9), (3,9,0), (3,9,8)} ∪∪ {(8,0,3), (8,0,9), (8,3,0), (8,3,9), (8,9,0), (8,9,3)} ∪∪ {(9,0,3), (9,0,8), (9,3,0), (9,3,8), (9,8,0), (9,8,3)} == {(3,0,8), (3,0,9), (3,8,0), (3,8,9), (3,9,0), (3,9,8), (8,0,3), (8,0,9), (8,3,0), (8,3,9), (8,9,0), (8,9,3), (9,0,3), (9,0,8), (9,3,0), (9,3,8), (9,8,0), (9,8,3)}.
-
Сколько различных трехзначных нечётных чисел можно записать из цифр, входящих в множество А (все цифры в числе различны)?
всех сочетаний заданной длины k с повторениями элементов.Листинг кода:#include
using namespace std;
bool next_comb(int index[], const int& n, const int& m)
{
int j = m - 1;
while (index[j] == n && j >= 0)
j--;
if (j < 0)
return false;
if (index[j] >= n)
j--;
index[j]++;
if (j == m - 1)
return true;
for (int k = j + 1; k < m; k++)
index[k] = index[j];
return true;
}
int main()
{
setlocale(LC_ALL, "rus");
string char_set[] = { "aa", "bb", "cc", "dd"};
int N = sizeof(char_set) / sizeof(char_set[0]);
for (int i = 0; i < N; ++i)
std::cout << char_set[i] << " ";
std::cout << std::endl;
int n;
cin >> n;
int k = N > n ? N : n;
int* index = new int[k];
for (int i = 0; i < k; i++)
index[i] = 1;
do
{
for (int i = 0; i < n; ++i)
std::cout << char_set[index[i] - 1] << " ";
std::cout << std::endl;
} while (next_comb(index, N, n));
delete[] index;
//std::cin.get();
}
Пример работы программы:
= 120.