Hay dos tipos de subconjuntos: uno es un subconjunto de un conjunto y otro es un subconjunto de un conjunto múltiple.
Enumerar todos los subconjuntos únicos de un conjunto:
Para cada elemento del conjunto, tiene dos opciones: puede elegir este elemento o ignorarlo. Si la cardinalidad del conjunto es ‘n’, entonces el número de subconjunto será 2 ^ n. Aquí hay un código C ++ para enumerar todos los subconjuntos:
//Compute all the subsets of 'arr' and stores it in 'result'
void combinationAux(vector &arr, int pos, vector &subset, vector<vector > & result)
{
if(pos == arr.size())
{
result.push_back(subset);
return;
}
subset.push_back(arr[pos]);
combination(arr, pos + 1, subset, result);
subset.pop_back();
combination(arr, pos + 1, subset, res);
} vector<vector > combination(vector &arr)
{
vector subset;
vector<vector > result;
combinationAux(arr, 0, subset, result);
return result;
}
- ¿Cuándo fue tu primera entrevista? ¿Como le fue? ¿Qué aprendiste de esa experiencia? ¿Cómo te preparaste para la entrevista?
- Cómo descifrar las entrevistas de codificación en línea
- ¿Cuándo es el momento adecuado para que un graduado universitario (CSE) comience a leer el libro 'Cracking the Coding Interview'?
- ¿Las empresas hacen preguntas difíciles en sus entrevistas de pasantía en la ronda técnica, con respecto a las estructuras de datos y algoritmos? ¿Dónde puedo aprenderlos?
- Para codificar entrevistas en empresas de primer nivel como Google, Facebook, etc., ¿es C un lenguaje adecuado?
//Compute all the subsets of 'arr' and stores it in 'result'
void combinationAux(vector &arr, int pos, vector &subset, vector<vector > & result)
{
if(pos == arr.size())
{
result.push_back(subset);
return;
}
subset.push_back(arr[pos]);
combination(arr, pos + 1, subset, result);
subset.pop_back();
combination(arr, pos + 1, subset, res);
} vector<vector > combination(vector &arr)
{
vector subset;
vector<vector > result;
combinationAux(arr, 0, subset, result);
return result;
}
Enumeración de todos los subconjuntos únicos de un conjunto múltiple:
Un Multiset puede representarse mediante un conjunto de 2 tuplas (a, m (a)), donde a es un elemento de multiset ym (a) es su multiplicidad. Para cada 2 tuplas (a, m (a)), tiene m (a) + 1 opciones para elegir ‘a’. Aquí hay un código C ++ para enumerar todos los subconjuntos de un multiset:
//This function computes all the subsets for multiset 'arr' and stores
//it in 'result'
void combinationAux(vector<pair > &arr, int pos, vector &subset, vector<vector > &result)
{
if(pos == num.size())
{
result.push_back(subset);
return;
}
para (int i = 0; i <= arr [pos] .second; i ++)
{
para (int j = 1; j <= i; j ++)
{
subset.push_back (arr [pos] .first);
arr [pos] .second -;
}
combinación (arr, pos + 1, subconjunto, resultado);
para (int j = 1; j <= i; j ++)
{
subset.pop_back ();
arr [pos] .second ++;
}
}
}
combinación de vector <vector > (vector <pair > & arr)
{
vector subconjunto;
resultado del vector <vector >;
combinaciónAux (arr, 0, subconjunto, resultado);
resultado de retorno;
}