#include #include int messaggio[10000]; int n, diversi; void esplora(int start){ int codifica; codifica=0; //printf("parto da %d\n", start); if(start<=(n-1)){ //printf("Analizzo %d\n",messaggio[start]); if(messaggio[start]==0) {/*printf("Ho A\n");*/ codifica=1; esplora(start+1);} //A if (codifica==1 && start+1==n-1) {diversi++;/*printf("incremento!!!!!!!!!!!!!!!!!\n");*/} } if(start<=(n-2)){ //printf("Analizzo %d%d\n",messaggio[start],messaggio[start+1]); if(messaggio[start]==0 && messaggio[start+1]==0 && start+1==n) {/*printf("Ho B\n");*/codifica=1; esplora(start+1);} //B if (codifica==1 && start+2==n-1) {diversi++;/*printf("incremento!!!!!!!!!!!!!!!!!\n");*/} } if(start<=(n-3)){ //printf("Analizzo %d%d%d\n",messaggio[start],messaggio[start+1],messaggio[start+2]); if(messaggio[start]==0 && messaggio[start+1]==0 && messaggio[start+2]==1) {/*printf("Ho C\n");*/codifica=1; esplora(start+1);} //C if(messaggio[start]==0 && messaggio[start+1]==1 && messaggio[start+2]==0) {/*printf("Ho D\n");*/codifica=1; esplora(start+1);} //D if (codifica==1 && start+2==n-1) {diversi++;/*printf("incremento!!!!!!!!!!!!!!!!!!!!\n");*/} } if(start<=(n-4)){ //printf("Analizzo %d%d%d%d\n",messaggio[start],messaggio[start+1],messaggio[start+2],messaggio[start+3]); if(messaggio[start]==0 && messaggio[start+1]==0 && messaggio[start+2]==1 && messaggio[start+3]==0) {/*printf("Ho E\n");*/codifica=1; esplora(start+1);} //E if(messaggio[start]==0 && messaggio[start+1]==1 && messaggio[start+2]==0 && messaggio[start+3]==0) {/*printf("Ho F\n");*/codifica=1; esplora(start+1);} //F if(messaggio[start]==0 && messaggio[start+1]==1 && messaggio[start+2]==1 && messaggio[start+3]==0) {/*printf("Ho G\n");*/codifica=1; esplora(start+1);} //G if (codifica==1 && start+3==n-1) {diversi++;/*printf("incremento !!!!!!!!!!!!!\n");*/} } return; } void main(){ //leggo il file FILE *F=fopen("input.txt","r"); fscanf(F,"%d", &n); //lunghezza stringa //leggo la configurazione iniziale int i; for(i=0; i