Cette implementation ( facile à coder .. ) n'est pas optimale car apres un certain nombre de cycles , il apparait des redondances et mon algo ne les gerent pas. .
Louis
#include <cstdlib> #include <iostream>
const int nbmax = 1000; char suite[nbmax];
int Etape(int len) { int cur = 0; int occ = 0; int prec = 0; char suite2[nbmax]; for(int i=0;i<len;i++) { if(suite[i]==prec) occ++; else { if(i!=0) { suite2[cur++] = occ; suite2[cur++] = prec; } prec = suite[i]; occ = 1; } } suite2[cur++] = occ; suite2[cur++] = prec; for(int i=0;i<cur;i++) suite[i] = suite2[i]; return cur; }
int main(int argc, char *argv[]) { int N; int len; scanf("%d",&N); suite[0] = 1; len = 1; for(int i=0;i<N;i++) len = Etape(len); for(int i=0;i<len;i++) printf("%d ",suite[i]); }
|