Написать программу перебора всех возможных способов размещения n различных предметов по m различным ящикам, не более чем по одному в ящик, m и n вводятся с пользователем — C++(Си)

#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;
}

Leave a Comment