En cuanto al problema inverso de las combinaciones de letras, espero que un maestro de C++ pueda explicarlo usando recursividad y adjuntar el código. Gracias.
# include & ltiostream & gt
# include & ltstring& gt
Usar espacio de nombres std
String nextWord( String & ampStr, int N) //Encuentra el siguiente número de diccionario de str.
{
//Para encontrar el tamaño de str, la función size devuelve size_type en lugar de int type.
string::size_type SZ = str . size();
If (sz == 0) //Si es una cadena vacía, configúrala y regresa.
return str = " A
//end representa la enésima letra, que es el carácter más grande del diccionario. Suponiendo N=3, entonces end es c.
const char end = 'A'+N-1;
//Si el primer carácter es el más grande, como el diccionario C, no hay el siguiente número de diccionario. Establezca str en nulo y devuelva. /p>
if (str[0] == end)
return str =
//Si el último carácter es final, elimínelo y reemplácelo con el. anterior Agregue +1 al carácter
//Por ejemplo, si es ABC, el último dígito es C, luego elimine C y cambie B+1 a AC
if (str. [sz- 1] == fin)
{
cadena(SZ-1);
cadena[SZ-2]+= 1;
}
// De lo contrario, su longitud debe ser menor que n, agréguele otro carácter
// Por ejemplo, AB, agregue un carácter B +1 a él. Se convierte en
Otros
str+= str[SZ-1]+1
Cadena de retorno; p>}
int main()
{
Cadena cadena
int N, K;
CIN & gt;& gtN & gt& gtk;
for(int I = 1;i<= K;++i) //Busca el siguiente diccionario de str hasta encontrar el k-ésimo diccionario. p >
siguientePalabra(str, N);
cout & lt& ltstr & lt& ltendl
Devuelve 0;
}