#include #include //#define N 7 //#define ALLOWED_CHANGES 1 int X[N][N][N][N]; long cnt = 0; inline int test_valid(int a,int b,int c,int d) { int i,j,k,l,m; int scenario=0; for(int e=0;e ALLOWED_CHANGES) return 0; } return 1; } inline void display() { cnt++; printf("#%ld: ",cnt); for(int a=0;a 0 ?"+":"-"); } } } } printf("\n"); } void rec_fill2(int a,int b,int c,int d) { if(a == b) { a = 0; b++; if(b == c) { b = 1; c++; if(c == d) { c = 2; d++; } } } if(d == N) { display(); } else { for(int v=-1;v<=+1;v+=2) { X[a][b][c][d] = v; if(test_valid(a,b,c,d)) rec_fill2(a+1,b,c,d); X[a][b][c][d] = 0; } } } void rec_fill1(int a,int b,int c,int d) { if(d == N) { c++; d = c+1; if(d == N) { b++; c = b+1; d = c+1; if(d == N) { a++; b = a+1; c = b+1; d = c+1; if(d == N) { display(); return; } } } } { for(int v=-1;v<=+1;v+=2) { X[a][b][c][d] = v; if(test_valid(a,b,c,d)) rec_fill1(a,b,c,d+1); X[a][b][c][d] = 0; } } } void init_zeros() { for(int a=0;a