#include #include #include #define MAX 100 int verificar(char *c, int inicio, int fim){ int tam = fim - inicio; int v = 1, f1 = 0; for(int i = inicio; i < fim+1; ++i){ if(c[i] == '1' && f1 == 1) v = 0; if(c[i] == '1') f1 = 1; if(c[i] == '0') f1 = 0; } return v; } int seq(char* c, int inicio, int fim){ if(c[fim+1] == '\0' && fim >= inicio){ if(verificar(c, inicio, fim)){ return 1 + seq(c, 0, fim-inicio-1); }else{ return seq(c, 0, fim-inicio-1); } }else if(fim >= inicio){//1 if(verificar(c, inicio, fim)){ return 1 + seq(c, inicio+1, fim+1); }else{ return seq(c, inicio+1, fim+1); } } return 0; } int main(){ int inicio = 0, fim = 3; char *c = "0111"; printf("%d\n", seq(c, inicio, fim)); return 0; }