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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 40, средняя оценка - 4.73
Decoy
0 / 0 / 0
Регистрация: 18.03.2009
Сообщений: 3
#1

Перебор всех возможных способов размещения n различных предметов по m различным ящикам - C++

18.03.2009, 11:24. Просмотров 5206. Ответов 8
Метки нет (Все метки)

Ребят, я на этом форуме не очень давно и хочу попросить помощи, Задача такого рода:
написать программу перебора всех возможных способов размещения n различных предметов по m различным ящикам, не более чем по одному в ящик, m и n вводятся с пользователем. Задумки были но учебный сервак упал вместе со всем что на нем было, поэтому буду писать только на локальной машине. Заранее благодарен...
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.03.2009, 11:24
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перебор всех возможных способов размещения n различных предметов по m различным ящикам (C++):

В массиве хранится сведения о стоимости 12 различных предметов. определить общую стоимость всех предметов? - C++
В массиве хранится сведения о стоимости 12 различных предметов. определить общую стоимость всех предметов?

Перебор и вывод всех возможных сочетаний - C++
Итак,здравствуйте форумчане. Привела меня к вам интересная задачка. Вводится слово,заранее не известно количество букв необходимо...

Организовать перебор всех возможных сочетаний - C++
Затрудняюсь с алгоритмом. Как можно организовать перебор всех возможных группировок? Имеется несколько романов одного писателя. Для...

Реализовать перебор всех возможных IP-адресов (С++) - C++
Реализовать перебор всех возможных IP-адресов, начиная с 0.0.0.0, заканчивая 255.255.255.0. (проще говоря перебор всех возможных комбинаций...

Перебор всех возможных сочетаний заданных переменных - C++
Чтобы не создавать новую тему, напишу здесь. Есть несколько переменных - около 20, часть переменных может иметь 2 значения, часть - три...

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Humanitis
172 / 164 / 6
Регистрация: 12.01.2009
Сообщений: 430
18.03.2009, 13:33 #2
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
#include <iostream>
 
 
void placement(int citems,int iter,int const cboxes,char* output)
{
    if(!citems)
    {
        for(int i=0;i<cboxes-iter;i++)
            output[i]='0';
        std::cout<<(output-iter)<<'\n';
        return;
    }
    *output='1';
    placement(citems-1,iter+1,cboxes,output+1);
    if(citems<cboxes-iter)
    {
        *output='0';
        placement(citems,iter+1,cboxes,output+1);
    }
}
 
int main()
{
    int n,m;
    std::cout<<"input count of items:";
    std::cin>>n;
    std::cout<<"\ninput count of boxes:";
    std::cin>>m;
    if(n>m)std::cout<<"No solutions";
    else if(n==m)for(int i=0;i<m;i++)std::cout<<'1';
    else
    {
        char* output=new char[m+1];
        output[m]=0;
        placement(n,0,m,output);
    }
    std::cout<<'\n';
    system("pause");
    return 0;
}
1
Decoy
0 / 0 / 0
Регистрация: 18.03.2009
Сообщений: 3
24.03.2009, 08:34  [ТС] #3
Огромное спасибо!
0
Decoy
0 / 0 / 0
Регистрация: 18.03.2009
Сообщений: 3
05.04.2009, 11:48  [ТС] #4
Черт, получилось немного не то, что нужно n различных предметов, т.е. к примеру n=5, т.е. предметы 1,2,3,4,5, что-то я не понимаю как это дело реализовать...
0
Humanitis
172 / 164 / 6
Регистрация: 12.01.2009
Сообщений: 430
05.04.2009, 14:01 #5
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
#include <iostream>
 
void placement(int citems,int iter,int const cboxes,char* output)
{
    if(iter==citems)
        std::cout<<output<<'\n';
    else
        for(int i=0;i<cboxes;i++)
        {
            if(output[i]!='0')
                continue;
            output[i]=49+iter;
            placement(citems,iter+1,cboxes,output);
            output[i]='0';
        }
}
 
int main()
{
    int n,m;
    std::cout<<"input count of items:";
    std::cin>>n;
    std::cout<<"\ninput count of boxes:";
    std::cin>>m;
    if(n>m)std::cout<<"No solutions";
    else
    {
        char* output=new char[m+1];
        for(int i=0;i<m;i++)
            output[i]='0';
        output[m]=0;
        placement(n,0,m,output);
    }
    std::cout<<'\n';
    system("pause");
    return 0;
}
1
David Sylva
1286 / 948 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
13.07.2012, 22:20 #6
Вариант решения задачи
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
#include <iostream> 
#include <algorithm>
using namespace std; 
int main() 
{   
    setlocale(0, "rus");
    int n, m;  
    int i; 
    int* array;       
 
    cout << "Введите n предметов  "; 
    cin >> n; 
    cout << "Введите m ящиков "; 
    cin >> m; 
 
    if( n > m)   
        cout << "Нет решения " << endl; 
    else 
    { 
       array = new int[m+1]; 
       for ( i = 0; i < m; i++) 
       {   
           if(i >= n)        
               array[i] = 0; 
           else 
               array[i] = i+1;  
       } 
 
       sort(array,array+m); 
 
       do 
       {   
          for ( i = 0; i < m; i++) 
               cout << array[i] << " ";  
           cout << endl; 
 
       } while(next_permutation(array, array+m)); 
    }
 
    return 0;
}
0
games over
0 / 0 / 0
Регистрация: 03.01.2014
Сообщений: 9
03.01.2014, 15:53 #7
помогите пожалуйста
Ввести число. Используя рекурсивную функцию, получить все возможные перестановки цифр этого числа.
0
gomodril
6 / 6 / 0
Регистрация: 10.10.2012
Сообщений: 132
30.01.2017, 18:45 #8
Цитата Сообщение от David Sylva Посмотреть сообщение
setlocale(0, "rus");
данный вариант выводит не все возможные варианты, к примеру n=3 и m=3, выводит всего 6 вариантов, в то время как их должно быть 3^3 = 27
Так же ищу решение, может кто подскажет варианты.
0
Kellan
0 / 0 / 0
Регистрация: 27.06.2017
Сообщений: 3
13.07.2017, 00:01 #9
интересно посмотреть на 27 вариантов. Даже представить не могу больше, может напишите?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.07.2017, 00:01
Привет! Вот еще темы с ответами:

Перебор всех возможных вариантов с переменными приравненных к определенному значению - C++
Помогите решить задачу: Есть 3 переменные А, В, С и у каждого из них какое-то целочисленное значение, которое задает пользователь. Нужно...

Перебор всех возможных подмножеств заданного множества целых чисел - C++
Помогите решить задачу. Есть заданное множество целых чисел: -1 0 1. Нужно перебрать все возможные способы размещения в векторе, этих...

Выписать все возможные размещения k из n предметов - C++
Дано n предметов, каждый предмет имеет порядковый номер. Написать программу, которая выписывает все возможные размещения k из n...

Вычислить количество способов группировки K предметов из N при больших N - C++
Составить программу, которая, по данным N и K, вычисляет количество способов группировки K предметов из N, выражающееся формулой C(n,k) =...


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

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

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