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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Как считать в цикле файл до символа перевода каретки? http://www.cyberforum.ru/cpp-beginners/thread1312031.html
как считать файл до символа перевода каретки '\n', сделав всё это в цикле?
C++ Поставить в правильном падеже слово "пирожок" (if или switch) Помогите пожалуйста! Составьте программу, которая поставит в правильном падеже слово "пирожок" в фразе "я собираюсь съесть n пирожков" в зависимости от числа n. (от 1 до 100) Заранее спасибо. http://www.cyberforum.ru/cpp-beginners/thread1312024.html
Одинаковые символы в строке C++
Помогите дописать программу , пожалуйста . Задание : Дана строка . Найти наибольшее количество одинаковых символов , идущих подряд. Я начал немного , что дальше делать , пока не придумал , буду благодарен за помощь. Собственно , кусочек кода : #include <iostream.h> int main() { cout << "Kol-vo symbols " << endl;
Составить алгоритм и программу, которая определит стоимость обоев для всей стены, если цена одного рулона X C++
Хозяин хочет оклеить обоями длинную стену в своем доме. Длина этой стены равна А метров, а высота - В метров. Рулон обоев имеет длину 12 метров и ширину K см. Составьте алгоритм и программу, которая определит стоимость обоев для всей стены, если цена одного рулона X руб.
C++ Перевод с паскаля на с++ http://www.cyberforum.ru/cpp-beginners/thread1312014.html
Помогите перевести с паскаля на с++ uses crt; const n:byte = 3; dw = 0.2; type TMatr = array of real; TVector = array of real; const eps = 0.001; var a:TMatr; b,b1:TVector; i,j,k:integer; 125 w,buf:real;
C++ Составить алгоритм и программу, которая подсчитает и выведет на экран стоимость куска этой ткани длиной Х В магазине продается костюмная ткань. Ее цена В руб. за квадратный метр. Составьте алгоритм и программу, которая подсчитает и выведет на экран стоимость куска этой ткани длиной Х метров и шириной 80 см. подробнее

Показать сообщение отдельно
TheCalligrapher
С чаем беда...
Эксперт С++
 Аватар для TheCalligrapher
2901 / 1437 / 396
Регистрация: 18.10.2014
Сообщений: 2,650
26.11.2014, 23:51     Подсчет количества способов создания команды из 6 человек
Ну, как обычно в таких случаях, от ТС по-видимому ожидается программа, которая будет перечислять (и подсчитывать) все способы формирования команд. Т.е. задача сводится к традиционному перечислению всех подмножеств некоего множества по плану:

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));
}
 
Текущее время: 13:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru