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

Задачка про стол. Размещение гостей без повторений - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.71
Tomikun
1 / 1 / 0
Регистрация: 16.03.2012
Сообщений: 45
25.07.2013, 13:22     Задачка про стол. Размещение гостей без повторений #1
Представьте, что вы собираетесь пригласить к себе шестерых гостей, но за
вашим столом могут разместиться всего лишь 4 человека Сколькими
способами можно разместить четырех из шести гостей за обеденным сто-
лом'<> Каждый из шести гостей может разместиться на первом стуле. Каж-
дый из оставшихся пяти гостей может занять второй стул. На третьем
стуле может разместиться один их четырех гостей, и на четвертом — один
из трех оставшихся гостей. Двоим из гостей не достанется ни одного
места. Таким образом, число возможных рассадок гостей за столом равно
6*5*4*3 = 360. Напишите программу, которая будет производить аналогич-
ные вычисления для любого числа гостей и любого числа мест за столом
(при этом предполагается, что число гостей не меньше числа мест). Про-
грамма не должна быть сложной, и вычисление можно организовать с по-
мощью простого цикла for.

Обясните пожалуста принцип , есле у меня например 8 гостей и 5 мест для них то мне надо 8*7*6*5*4 - ? а то чтота заплутался .

Добавлено через 9 минут
только не пишите свою програму только обясните немножко ок.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.07.2013, 13:22     Задачка про стол. Размещение гостей без повторений
Посмотрите здесь:

Число разложений без повторений ! C++
C++ Задачка про треугольник.
Рандом без повторений C++
Задача про круглый стол (динамические массивы) C++
Перестановки без повторений C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Даниил
67 / 40 / 7
Регистрация: 14.05.2013
Сообщений: 383
25.07.2013, 13:23     Задачка про стол. Размещение гостей без повторений #2
Ты "что-тО не пУтайся", можешь правильное название задачи сказать?
ValeryS
Модератор
6373 / 4839 / 440
Регистрация: 14.02.2011
Сообщений: 16,038
25.07.2013, 13:26     Задачка про стол. Размещение гостей без повторений #3
это не программирование это комбинаторика
Цитата Сообщение от Tomikun Посмотреть сообщение
. Про-
грамма не должна быть сложной, и вычисление можно организовать с по-
мощью простого цикла for.
число гостей m
число стульев n
C++
1
2
3
int c=1;// количество комбинаций
for(int i=0;i<n;i++)
 c=c*(m-i);
Даниил
67 / 40 / 7
Регистрация: 14.05.2013
Сообщений: 383
25.07.2013, 13:29     Задачка про стол. Размещение гостей без повторений #4
Если бы ты внимательно читал книгу то ты бы знал как задачу решить
Если ты читаешь эту книгу значит ты учишься, ты новичёк, да?
Ну прочитай ещё раз внимаательно 3 главу, или, ещё лучше, 1 2 и 3 главу

Добавлено через 28 секунд

Не по теме:

А я украинец, и, как видишь, русский хорошо знаю

Tomikun
1 / 1 / 0
Регистрация: 16.03.2012
Сообщений: 45
25.07.2013, 13:33  [ТС]     Задачка про стол. Размещение гостей без повторений #5
ValeryS спасибо вам большое.
ValeryS
Модератор
6373 / 4839 / 440
Регистрация: 14.02.2011
Сообщений: 16,038
25.07.2013, 13:42     Задачка про стол. Размещение гостей без повторений #6
ну немного теории
сколькими способами можно посадить 5 человек на 1 стул -пятью
теперь берем два стула
на первый стул пятью
на оставшийся стул нужно посадить четыре человека -четыре
задача привелась к предыдущей только количство стульев и гостей уменьшилось
возьмем три стула
на первый пять комбинаций
на второй четыре комбинации
на последний стул претендуют три человека три комбинации
потом их перемножаем 5*4*3=60
как видишь задача всегда приводится к предыдущей
на лицо рекурсия

вот ее решение с рекурсией
C++
1
2
3
4
5
6
7
int fnc (int m,int n)
 {
    if(n==0)
    return 1;
  return m*fnc(m-1,n-1);
 
 }
Добавлено через 4 минуты
пардон решение хоть и правильное но несколько нелогичное
вот так будет правильней
C++
1
2
3
4
5
6
int fnc (int m,int n)
{
 if(n==1) // если стул один  
  return m; // то вернем количество комбинаций равное числу гостей
 return m*fnc(m-1,n-1);// иначе умножим количество гостей на результат который вернет функция с уменьшенным количеством гостей и стульев
}
Ryabchik
17 / 17 / 1
Регистрация: 09.01.2013
Сообщений: 158
25.07.2013, 19:32     Задачка про стол. Размещение гостей без повторений #7
Даниил1991, вы чего такой борзый? Это его личное дело, какие задачи решать. Если вы считаете себя таким умным, лучше помогайте, а не выпендривайтесь.
P.s. Простите, сударь, за мой нелитературный язык, но очень уж выбесили
Даниил
67 / 40 / 7
Регистрация: 14.05.2013
Сообщений: 383
25.07.2013, 21:02     Задачка про стол. Размещение гостей без повторений #8
Ну зачем так сразу налетать...Нехорошо это, к словам придираться, ведь если я запятую где-то лишнюю поставил, или не поставил, то это не повод говорить что я плохо знаю русский Я стараюсь чем-то помочь, хоть с задачей я и не смог помочь, но всё же...
Нужно уметь сдерживаться, а не высказывать всё что думаете
Вы уж извините что я вам морали читаю, и без меня всё знаете
Но спасибо вам, уважаемый salam, Ryabchik,TimeToWork, за то что указали мне на мои ошибки
Olivеr
 Аватар для Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
25.07.2013, 21:56     Задачка про стол. Размещение гостей без повторений #9
код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <cstdint>
 
int main()
{
    setlocale(LC_CTYPE, "");
    uint32_t guests, chairs;
    std::cout << "Number of guests...";
    std::cin >> guests;
    std::cout << "Number of chairs...";
    std::cin >> chairs;
 
    if (chairs > guests) {
        std::swap(chairs, guests);
    }
 
    uint64_t combinations = 1;
    while (chairs--) combinations *= guests--;
    std::cout << combinations;
    return 0;
}
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
26.07.2013, 07:28     Задачка про стол. Размещение гостей без повторений #10
Цитата Сообщение от Tomikun Посмотреть сообщение
Обясните пожалуста принцип
принцип прост - размещение без повторений из n элементов по k:
http://www.cyberforum.ru/cgi-bin/latex.cgi?A_n^k = \frac{n!}{(n-k)!}=n(n-1)...(n-k+1)
igoreshka3333
0 / 0 / 0
Регистрация: 01.08.2014
Сообщений: 3
03.08.2014, 12:04     Задачка про стол. Размещение гостей без повторений #11
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream.h>
#include <conio.h>
#include <windows.h>
#include <iomanip.h>
 
 
int main()
{
 int chairs, guests, j;
 cout <<"Guests, chairs: "; cin >> guests >> chairs;
 int comb1 = guests - chairs + 1;
 int comb2 = guests - chairs + 1;
 for (int i=1; i<chairs; i++)
 {
   j = comb2*(comb1+i);
   comb2 = j;
 }
 cout << j;
 getch ();
}
Вот решение!
Vtulhu
369 / 375 / 96
Регистрация: 12.08.2011
Сообщений: 1,610
03.08.2014, 15:50     Задачка про стол. Размещение гостей без повторений #12
C
1
2
3
4
5
6
7
8
unsigned int seat_comb(unsigned int guests, unsigned int chairs)
{
    unsigned int comb = 1;
    while( chairs-- ) {
        comb *= guests--;
    }
    return comb;
}
slater
0 / 0 / 0
Регистрация: 27.09.2015
Сообщений: 25
03.10.2015, 20:00     Задачка про стол. Размещение гостей без повторений #13
Цитата Сообщение от igoreshka3333 Посмотреть сообщение
comb2 = j;
А как при присвоении к comb2 значения j получилось 360?

Добавлено через 18 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <conio.h>
 
using namespace std;
 
int main()
{
    setlocale(0, "");
 
    int guest, seats, count = 1;
    cout << "Ввдетие число гостей:";
    cin >> guest;
    cout << "Ввдетие число стульев:";
    cin >> seats;
 
    for (int i = guest; i > guest-seats; i--)
    {
        count = count* i;
    }
    cout << count;
    system("pause");
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.10.2015, 20:19     Задачка про стол. Размещение гостей без повторений
Еще ссылки по теме:

Random, значения без повторений C++
Задача про гостей C++
Последовательность чисел без повторений C++

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

Или воспользуйтесь поиском по форуму:
castaway
Эксперт С++
4837 / 2976 / 367
Регистрация: 10.11.2010
Сообщений: 11,008
Записей в блоге: 10
Завершенные тесты: 1
03.10.2015, 20:19     Задачка про стол. Размещение гостей без повторений #14
slater, для кого ты это пишешь? На дату посмотри.
Yandex
Объявления
03.10.2015, 20:19     Задачка про стол. Размещение гостей без повторений
Ответ Создать тему
Опции темы

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