Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Beyer
0 / 0 / 0
Регистрация: 17.12.2013
Сообщений: 27
#1

Подсчет количества способов создания команды из 6 человек - C++

26.11.2014, 21:53. Просмотров 330. Ответов 8
Метки нет (Все метки)

Нужен алгоритм создания программы, которая подсчитывает количество способов создания команды из 6 человек, в которой не менее 2 девочек, мальчики - 7 человек, девочки - 4.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.11.2014, 21:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Подсчет количества способов создания команды из 6 человек (C++):

Сколькими способами можно отобрать команду в составе 5 человек из 8 кандидатов;из 10 кандидатов; из 11 кандидатов? Подсчет количества способов отбора - C++
Нужна помощь, есть код на Pascal нужно в C. Вот программа: function fact(x: longint): longint; begin if x=0 then fact:=1 ...

Подсчет количества способов, которыми можно разменять рубль медными монетами (достоинством 1, 2, 3, 5 копеек) - C++
составить алгоритм подсчета количества способов, которыми можно разменять рубль медными монетами(достоинством в1,2,3,5 копеек)

Подсчет количества символов - C++
написать программу какая с позиционной системы счисления выводит как число в десятичной системе счисления. То есть когда вводишь символы...

Подсчет количества слов - C++
С клавиатуры вводится строка. Составить программу, которая подсчитывает количество слов, имеющих нечетную длину; вводит на экран частоту...

Подсчет количества бит - C++
Здравствуйте! У меня есть функция, которая считает количество бит в 32-х разрядном числе типа uint #define g21...

Подсчет количества слов - C++
Допустим, дана строка: "129 s23 ertr 234 0 e" Как подсчитать количество слов, состоящих только из латинских букв?

8
AnonymC
1165 / 447 / 24
Регистрация: 23.06.2009
Сообщений: 6,308
Завершенные тесты: 1
26.11.2014, 22:09 #2
Beyer, Вам свой же вопрос понятен?
0
Beyer
0 / 0 / 0
Регистрация: 17.12.2013
Сообщений: 27
26.11.2014, 22:11  [ТС] #3
Есть задача: Из группы, которая состоит из 7-ми мальчиков и 4-х девочек, необходимо сложить команду из 6 человек так, чтобы в нее входило не менее двух девочек. Сколько существует способов сделать это?
Как решается сама задача??
0
AnonymC
1165 / 447 / 24
Регистрация: 23.06.2009
Сообщений: 6,308
Завершенные тесты: 1
26.11.2014, 22:33 #4
Beyer, интересно. Могу немножко помочь, но в точности не отвечу на ваш вопрос. Обозначим число вариантов в "В". В=1 для начала.
Девочек четыре, вариантов уже 4. В*4.
Мальчиков 7. Каждая пара девочек может побывать в команде с 4мя мальчиками из 7. В*7=28.
Три мальчика каждый раз не будет в команде. То есть В/3=28/3. Это в том случае, когда в группе 2 девочек. Ессли больше, то 28/3*4-1.
Ну что то типо этого
0
Байт
Эксперт C
16153 / 10431 / 1560
Регистрация: 24.12.2010
Сообщений: 19,778
26.11.2014, 22:39 #5
C42*C94
0
zss
Модератор
Эксперт С++
6407 / 5973 / 1946
Регистрация: 18.12.2011
Сообщений: 15,405
Завершенные тесты: 1
26.11.2014, 22:39 #6
Количество сочетаний C(n,k)=n!/(k!*(n-k)!).
Разные варианты выбора мальчиков nm=C(7,4),
девочек nd=C(4,2),
общий итог n=nm*nd
1
Mr_Progger
24 / 24 / 9
Регистрация: 01.11.2013
Сообщений: 173
26.11.2014, 22:46 #7
Думаю как то так
С(7,2)*С(4,4)+С(7,3)*С(4,3)+С(7,4)*С(4,2)
0
Байт
Эксперт C
16153 / 10431 / 1560
Регистрация: 24.12.2010
Сообщений: 19,778
26.11.2014, 23:06 #8
Цитата Сообщение от Beyer Посмотреть сообщение
не менее двух девочек.
Выбираем 2-х девочек C42 Остается 9 ребятишек. Теперь уже неважно, кого будем выбирать (все равны) C94
0
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
3899 / 2136 / 548
Регистрация: 18.10.2014
Сообщений: 3,749
26.11.2014, 23:51 #9
Ну, как обычно в таких случаях, от ТС по-видимому ожидается программа, которая будет перечислять (и подсчитывать) все способы формирования команд. Т.е. задача сводится к традиционному перечислению всех подмножеств некоего множества по плану:

1. Перечисляем все 2-подмножества из 4-множества девочек
2. Перечисляем все 4-подмножества из 9-множества мальчиков-и-оставшихся-девочек

Добавлено через 31 минуту
Например вот так

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
#include <cassert>
#include <iostream>
#include <vector>
using namespace std;
 
typedef vector<unsigned> TSubset;
 
void init_subset(TSubset &subset)
{
  for (TSubset::size_type i = 0; i < subset.size(); ++i)
    subset[i] = i;
}
 
bool next_subset(TSubset &subset, unsigned n)
{
  unsigned overflow = n;
  TSubset::iterator it = subset.end();
 
  do
  {
    --it;
    if (++*it < overflow || it == subset.begin())
      break;
 
    --overflow;
  } while (true);
 
  assert(*it <= overflow);
  if (*it == overflow)
    return false;
 
  for (++it, ++overflow; it != subset.end(); ++it, ++overflow)
  {
    *it = *(it - 1) + 1;
    assert(*it < overflow);
  }
 
  return true;
}
 
int main()
{
  const char* girls[] = { "Rita", "Kimberly", "Natasha", "Isolda" };
  const char* boys[] = { "Alex", "Michael", "Ronald", "Andrey", "William", "Tristan", "Nebuchadnezzar" };
 
  const unsigned N_GIRLS = sizeof girls / sizeof *girls;
  const unsigned N_BOYS = sizeof boys / sizeof *boys;
 
  const unsigned N_GIRLS_REQUIRED = 2;
  const unsigned N_TOTAL_REQUIRED = 6;
 
  assert(N_GIRLS_REQUIRED <= N_GIRLS);
  assert(N_TOTAL_REQUIRED >= N_GIRLS_REQUIRED);
  assert(N_TOTAL_REQUIRED <= N_GIRLS + N_BOYS);
 
  unsigned i_team = 0;
 
  TSubset girls_first(N_GIRLS_REQUIRED);
  init_subset(girls_first);
 
  do
  {
    for (TSubset::size_type i = 0; i < girls_first.size(); ++i)
      swap(girls[i], girls[girls_first[i]]);
 
    TSubset rest(N_TOTAL_REQUIRED - N_GIRLS_REQUIRED);
    init_subset(rest);
 
    do
    {
      cout << "Team #" << ++i_team << ": ";
 
      for (TSubset::size_type i = 0; i < N_GIRLS_REQUIRED; ++i)
        cout << " " << girls[i];
 
      for (TSubset::size_type i = 0; i < rest.size(); ++i)
        cout << " " <<
          (rest[i] < N_GIRLS - N_GIRLS_REQUIRED ?
            girls[rest[i] + N_GIRLS_REQUIRED] :
            boys[rest[i] - (N_GIRLS - N_GIRLS_REQUIRED)]);
 
      cout << endl;
 
    } while (next_subset(rest, N_GIRLS + N_BOYS - N_GIRLS_REQUIRED));
 
    for (TSubset::size_type i = girls_first.size(); i-- > 0;)
      swap(girls[i], girls[girls_first[i]]);
 
  } while (next_subset(girls_first, N_GIRLS));
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.11.2014, 23:51
Привет! Вот еще темы с ответами:

Подсчет количества слов - C++
Есть два файла, 1.txt и 2.txt Задание: 1) Скопировать в файл 2.txt только те строки из 1.txt, которые начинаются с буквы &quot;а&quot; ...

Подсчет количества символов - C++
Доброго времени суток всем! помогите,пожалуйста,решить задачу: Программа должна подсчитывать количество символов в заданном текстовом...

Подсчет количества элементов матрицы - C++
матрица В(2,3) с данными &quot;0&quot; или&quot;1&quot;. посчитать количество &quot;0&quot; и &quot;1&quot; и заменить &quot;0&quot; на символ &quot;а&quot;. результаты напечатать в виде: ...

Подсчет количества операций и перестановок - C++
помогите пожалйуста как написать в с++ дан массив в нем идет на выбор сортировка 1.простыми вставками 2. сортировка шелла. чтобы программа...


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

Или воспользуйтесь поиском по форуму:
9
Yandex
Объявления
26.11.2014, 23:51
Ответ Создать тему
Опции темы

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