Sì, direi che va bene. Attenzione che dentro all'if il confronto si fa con il doppio uguale.

Ti posto il codice che avevo scritto io, che stampa tutte le portate possibili e un asterisco di fianco a quelle da mangiare:

codice:
    std::cout << "Portate da mangiare: " << std::endl;
    for(int i=0; i<size; ++i) {
        std::cout << portate[i];
        if(binario_migliore[i] == 1) {
            std::cout << "   *";
        }
        std::cout << std::endl;
    }

Vedi tu cosa preferisci...