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

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

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

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

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

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

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

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

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

8
Humanitis
176 / 168 / 27
Регистрация: 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
176 / 168 / 27
Регистрация: 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
1294 / 956 / 267
Регистрация: 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 / 2
Регистрация: 03.01.2014
Сообщений: 9
03.01.2014, 15:53 7
помогите пожалуйста
Ввести число. Используя рекурсивную функцию, получить все возможные перестановки цифр этого числа.
0
gomodril
6 / 6 / 0
Регистрация: 10.10.2012
Сообщений: 140
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
13.07.2017, 00:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.07.2017, 00:01

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

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

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


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

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

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