Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
mamzel
1 / 1 / 1
Регистрация: 30.10.2014
Сообщений: 31
#1

Сколькими способами из колоды (36 карт) можно выбрать неупорядоченный набор из 6 карт, удовлетворяющих условию

25.02.2016, 22:01. Просмотров 959. Ответов 9
Метки нет (Все метки)

Сколькими способами из колоды 36 карт можно выбрать неупорядоченный набор из 6 карт, чтобы в этом наборе было бы точно: 2 дамы, 1 туз, 2 карты черной масти
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.02.2016, 22:01
Ответы с готовыми решениями:

Класс колоды карт и карты
помогите найти ошибку не компелируется! #include <iostream> #include...

Написать программу сортировки колоды карт
Необходимо упорядочить колоду карт (36 листов) сначала по мастям (пики, трефы,...

Создать два производных класса от колоды карт
Создать класс карта, имеющая ранг и масть. Карту можно перевернуть и открыть....

Реализовать иерархию классов для моделирования работы магазина, продающего колоды карт (по 36 и 52 карты)
Задание: 1. Реализовать класс: Магазин колод карт. Добавить возможность...

Реализовать структуру "Колода карт"; сформировать случайную перетасовку карт для трёх игроков
Создать структуру колоды карт, состоящую из двух полей- переменных...

9
8-BITOV
541 / 484 / 104
Регистрация: 05.05.2014
Сообщений: 1,108
25.02.2016, 22:03 #2
mamzel, Вы уверены, что попали в нужный раздел?
0
mamzel
1 / 1 / 1
Регистрация: 30.10.2014
Сообщений: 31
25.02.2016, 22:06  [ТС] #3
8-BITOV, а почему не? Реализовать должен на c++
0
Kerry_Jr
Эксперт PHP
2210 / 2006 / 940
Регистрация: 14.05.2014
Сообщений: 5,869
Записей в блоге: 1
Завершенные тесты: 5
25.02.2016, 22:17 #4
mamzel, если не ошибаюсь, то 3672:
С24 * С14 * С218.
С - количество сочетаний.
0
8-BITOV
541 / 484 / 104
Регистрация: 05.05.2014
Сообщений: 1,108
25.02.2016, 22:21 #5
Kerry_Jr, на Си++ посчитали?
0
mamzel
1 / 1 / 1
Регистрация: 30.10.2014
Сообщений: 31
26.02.2016, 00:01  [ТС] #6
Kerry_Jr, посмотрите. так просто на быструю руку набросал. результат высчитывает в 2 раза меньше, чем назвали вы. я не прав или вы не правы?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
#include <iostream>
using namespace std; 
int rec(int n, int k)
{
    if(n==k)
        return 1;
    if(k==1)
        return n;
    return rec(n-1, k-1)+rec(n-1, k);
}
 
int main()
{
    int n=4, k=2, n1=2, k1=1, n2=18, k2=2;
 
    cout << rec(n,k)*rec(n1,k1)*rec(n2,k2);
 
 
return 0;
}
Добавлено через 14 минут
Kerry_Jr, хотя, нет, вы правы однозначно. на листике посчитал. но где тогда я ошибся в коде?
0
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
4424 / 2395 / 664
Регистрация: 18.10.2014
Сообщений: 4,050
26.02.2016, 00:07 #7
Цитата Сообщение от mamzel Посмотреть сообщение
Сколькими способами из колоды 36 карт можно выбрать неупорядоченный набор из 6 карт, чтобы в этом наборе было бы точно: 2 дамы, 1 туз, 2 карты черной масти
Во-первых, какие способы считаются различными? Если один и тот же набор карт выбран из колоды дважды, но в разном порядке - это разные "способы" или одинаковые?

Во-вторых, как можно "реализовать на c++" решение непараметризованной задачи, обладающей константным ответом??

C++
1
int main() { std::cout << 42 << std::endl; }
?
0
Kerry_Jr
Эксперт PHP
2210 / 2006 / 940
Регистрация: 14.05.2014
Сообщений: 5,869
Записей в блоге: 1
Завершенные тесты: 5
26.02.2016, 08:13 #8
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
но в разном порядке
Цитата Сообщение от mamzel Посмотреть сообщение
неупорядоченный набор из 6 карт
Вроде понятно все. Или вы что-то другое имели в виду? И почему 42?

Добавлено через 5 минут
mamzel, у меня неправильно.
0
Croessmah
++Ͻ
14499 / 8281 / 1556
Регистрация: 27.09.2012
Сообщений: 20,334
Записей в блоге: 3
Завершенные тесты: 1
26.02.2016, 14:25 #9
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
И почему 42?
Это ответ на самый главный вопрос.
2
Mr.X
Эксперт С++
3178 / 1705 / 435
Регистрация: 03.05.2010
Сообщений: 3,867
26.02.2016, 15:08 #10
Лучший ответ Сообщение было отмечено gru74ik как решение

Решение

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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
//Сколькими способами из колоды 36 карт можно выбрать неупорядоченный набор
//из 6 карт, чтобы в этом наборе было бы точно: 2 дамы, 1 туз, 2 карты
//черной масти
///////////////////////////////////////////////////////////////////////////////
#include <iostream>
#include <utility>
#include <vector>
///////////////////////////////////////////////////////////////////////////////
const   int     SUITS_TOTAL     =   4;
const   int     ACE             =   0;
const   int     QWEEN           =   1;
///////////////////////////////////////////////////////////////////////////////
typedef std::vector     < int               >   T_sample_indexes;
typedef std::pair       < int,      int     >   T_card;
typedef std::vector     < T_card            >   T_deck;
///////////////////////////////////////////////////////////////////////////////
bool    sample_is_good
    (
        T_deck  const               &   deck,
        T_sample_indexes    const   &   sample_indexes
    )
{
    int     qweens_count    {};
    int     aces_count      {};
    int     black_count     {};
 
    for( auto   ind     :   sample_indexes )
    {
        auto    card    =   deck[ ind ];
 
        if( card.first      ==  QWEEN   )   {   ++qweens_count;     }
        if( card.first      ==  ACE     )   {   ++aces_count;       }
        if( card.second     %   2       )   {   ++black_count;      }
    }//for
 
    return      qweens_count    ==  2
            &&  aces_count      ==  1
            &&  black_count     ==  2;
}
///////////////////////////////////////////////////////////////////////////////
bool    successfully_inc_indexes
    (
        T_sample_indexes    &   sample_indexes,
        int                     ind_and_val_sum_max
    )
{
    for( size_t  i{}; i < sample_indexes.size(); ++i )
    {
        int     ind_and_val_sum_cur     =   i + sample_indexes[i];
 
        if  (
                    ind_and_val_sum_cur
                <   ind_and_val_sum_max
            )
        {
            ++ind_and_val_sum_cur;
 
            for( int  j = i; j >= 0; --j  )
            {
                sample_indexes[j]   =       ind_and_val_sum_cur
                                        -   j;
            }//for
            return  true;
        }
    }//for
 
    return  false;
}
///////////////////////////////////////////////////////////////////////////////
int     for_deck_wit_size_and_unord_selection_with_size_count_ways_where_2Q_1A_2black_suit
    (
        int     deck_size,
        int     sample_size
    )
{
    int     ind_and_val_sum_max     =   deck_size - 1;
    int     ranks_total             =   deck_size / SUITS_TOTAL;
    T_deck  deck;
 
    for( int  r{}; r < ranks_total; ++r )
    {
        for( int  s{}; s < SUITS_TOTAL; ++s )
        {
            deck.push_back( {r,s} );
        }//for
    }//for
 
    T_sample_indexes    sample_indexes;
 
    for( int  i = sample_size - 1; i >= 0; --i )
    {
        sample_indexes.push_back(i);
    }
 
    int     good_sample_count{};
 
    do
    {
        if  (
                sample_is_good
                    (
                        deck,
                        sample_indexes
                    )
            )
        {
            ++good_sample_count;
        }
    }
    while   (
                successfully_inc_indexes
                    (
                        sample_indexes,
                        ind_and_val_sum_max
                    )
            );
 
    return  good_sample_count;
}
///////////////////////////////////////////////////////////////////////////////
int     main()
{
    std::cout
    <<  for_deck_wit_size_and_unord_selection_with_size_count_ways_where_2Q_1A_2black_suit
            (
                36,
                6
            )
 
    <<  std::endl;
}
0
26.02.2016, 15:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.02.2016, 15:08

Раздача карт, оценка комбинации и выяснение сколько карт взять, сколько сбросить
Всем добра! Хочу спросить, как решать задачу со сдачей, оценкой карты и после...

Сколькими способами можно купить 185 кг ящиками по 15, 17 и 21 кг
В магазине продается мастика в ящиках по 15 кг,17 кг,21 кг. Как купить ровно...

Комбинаторика: сколькими способами можно отправить на олимпиаду 3 из 17 учеников?
В классе есть 17 учеников. Нужно отправить на олимпиаду 3 учеников с класса,...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru