In realtà il codice della prossima combinazione me lo avevi già scritto.. io l'ho riscritto alla mia maniera con un ciclo for vedi se va bene:

codice:
la tua codifica
     int pos = size - 1;
    while(pos >= 0 && vettore[pos] == 1) {
        vettore[pos] = 0;
        pos--;
    }
    if(pos >= 0) {
        vettore[pos] = 1;
    }
}
codice:
la mia :       void prossima_combinazione ()
    {
        int pos;
        for (pos=-1;pos>=0;pos--)
        portate[pos] = 0;
        
    if(pos >= 0) {
        portate[pos] = 1;
    }
}
Non vorrei creare troppo disturbo, scusami solo un'altra cosa: dove la potrei mettere la parte di codifica riguardante il vettore binario_migliore?