Перебор всех возможных способов размещения n различных предметов по m различным ящикам
#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;
}
Комментарии:
Нету комментариев для вывода...