#include #define MAX_SIZE 100 #define R 1 #define U 2 int findpath ( int n, int i, int j, int P[] ) { int k, x, y, np; if ((i == n) && (j == n)) { x = y = 0; printf("(%d,%d)", x, y); for (k=0; k<2*n; ++k) { if (P[k] == R) ++x; else ++y; printf("->(%d,%d)", x, y); } printf("\n"); return 1; } np = 0; if (i < n) { P[i+j] = R; np += findpath(n,i+1,j,P); } if (j < i) { P[i+j] = U; np += findpath(n,i,j+1,P); } return np; } int main ( ) { int n, np, P[MAX_SIZE]; printf("n = "); scanf("%d", &n); np = findpath(n,0,0,P); printf("%d paths\n", np); return 0; }