Существует 100 различных типов заглавных букв, каждый из которых имеет уникальный идентификатор от 1 до 100. Кроме того, существует 'n' человек, каждый из которых имеет коллекцию переменного числа заглавных букв. Однажды все эти люди решили пойти на вечеринку в кепке, но, чтобы выглядеть уникально, они решили, что ни один из них не будет носить кепку такого же типа. Итак, подсчитайте общее количество мероприятий или способов, чтобы ни один из них не носил шапку одинакового типа.
Ограничения: 1 <= n <= 10 </strong> Пример:
Первая строка содержит значение n, следующие n строк содержат коллекции всех n человек. Ввод: 3
5 100 1 // Коллекция от первого лица.
2 // Коллекция от второго лица.
5 100 // Коллекция от третьего лица.
Вывод: 4
Объяснение: Все допустимые пути: (5, 2, 100)
, (100, 2, 5),
(1, 2, 5)
и (1, 2, 100)
вывод, который я получаю -
(5,2,100)
мой код -
#include <iostream>
#include <vector>
#include <string>
#include <sstream>
#include <cstring>
using namespace std;
vector<int>c[10];
void comb(int index,int n,int d[],int v[])
{
if(index==n)
{for(int i=0;i<n;i++)
cout<<d[i]<<" ";
memset(v,0,sizeof(v));
cout<<endl;
return;
}
for(int k=0;k<c[index].size();k++)
{ if(v[c[index][k]]==0)
{ v[c[index][k]]=1;
d[index]=c[index][k];
comb(index+1,n,d,v);}
}
}
void enter(int n){
int x;
string str,temp;
getline(cin,str);
for(int i=0;i<n;i++)
{ getline(cin,str);
stringstream ss(str);
while(ss>>temp){
stringstream s;
s<<temp;
s>>x;
c[i].push_back(x);
}
}
int v[101]{};
int d[n];
comb(0,n,d,v);}
int main()
{ int n;
cin>>n;
enter(n);
return 0;
}