All pastes #417061 Raw Edit

Unnamed

public cpp v1 · immutable
#417061 ·published 2007-03-30 18:31 UTC
rendered paste body
#include <stdlib.h>#include <stdio.h>// But :// Lister tous les arrangements de bits de longueur N contenant U// fois le digit 1 par ordre décroissant./*Exemple :en entrée ...4 2en sortie ...110010101001011001010011*/int N, U;// Fonction récursivevoid Etendre(char * tab, int nb0, int nb1){    int i;    int size = nb0 + nb1;    if(size == N){        // La chaine est pleine        if(nb1 == U){ // Sureté, seulement si le nombre répond aux critères            for(i=0; i<N; i++) putchar(tab[i]);            putchar('\n');        }        return;    }    // Si on peut encore caser des uns, on copie le tableau arrivant et on le complète avec un 1    if(nb1<U){        char * t1 = malloc((size+1)*sizeof(char));        strcpy (t1,tab,size);        t1[nb0+nb1+1] = '1';        Etendre(t1, nb0, nb1+1);    }    // On copie le tableau arrivant dans t0 et on le complète avec un zero    // (uniquement s'il le nombre de zero finale n'a pas été atteint)    if(nb0<N-U){        char * t0 = malloc((size+1)*sizeof(char));        strcpy (t0,tab,size);        t0[nb0+nb1+1] = '0';        Etendre(t0, nb0+1, nb1);    }}void arrangements (int N, int U){    // On lance la récursion avec un tableau vide    Etendre(NULL, 0, 0);}int main (void){  scanf ("%d%d", &N, &U);  arrangements (N, U);  return 0;}