Orden del diccionario HDU

Cree que la pregunta es muy complicada, pero no dice que los resultados deban mostrarse en el orden del diccionario al final.

Entrada->Salida

ABC CBA->AB2CBA

CBA->Liga Profesional de Baloncesto Masculino Chino

Mi código es el siguiente (c++):

# include & ltiostream & gt

# include & ltstring& gt

Usar espacio de nombres std

int main(){

Cadena str

int n, I, suma

scanf ("% d", & ampn);

mientras(n-){

CIN>>str

int len ​​​​= str.length();

if (len == 1) { cout & lt; & ltstr & lt& ltendl continuar }

suma = 1;

for (I = 1; i & ltleni++){

if( I == len-1){

if(str【I】== str【I-1】)cout & lt;& lt++ suma & lt;& ltstr 【I】;

En caso contrario{

if (sum == 1) cout & lt;& ltstr【I-1】& lt;& ltstr【I】;

else cout & lt& ltsum<& ltstr【I-1】& lt;& ltstr【I】;

}

Descanso;

}

if ( str[I] = = str[I-1]) suma++;

De lo contrario {

if (suma == 1) cout & lt & ltstr【I-1】;

else cout & lt& ltsum<& ltstr【I-1】

suma = 1;

cout & lt& ltendl

}

Return 0;

}

La verdad, lo he hecho tres veces porque mi entendimiento es el mismo que el tuyo. . . Todavía hay muchos lugares en su código que se pueden optimizar, como b[I] = 65+I, que se puede escribir como b = 'A'+I, lo que ocupará menos memoria. Espero que ayude.