#include #define MS 100 int free[MS][MS]; int n,m; int forward = 1; void find( int i, int j, int v ) { if ( !free[i+1][j] && !free[i-1][j] && !free[i][j+1] && !free[i][j-1] ) { printf("\n"); forward = 0; return; } free[i][j] = 0; if ( free[i+1][j] ) { if ( !forward ) { printf("%*.*s", v, v, ""); forward = 1; } printf("n"); find( i+1, j, v+1 ); } if ( free[i][j-1] ) { if ( !forward ) { printf("%*.*s", v, v, ""); forward = 1; } printf("w"); find( i, j-1, v+1 ); } if ( free[i-1][j] ) { if ( !forward ) { printf("%*.*s", v, v, ""); forward = 1; } printf("s"); find( i-1, j, v+1 ); } if ( free[i][j+1] ) { if ( !forward ) { printf("%*.*s", v, v, ""); forward = 1; } printf("e"); find( i, j+1, v+1 ); } free[i][j] = 1; } main (int argc, char *argv[]) { int i,j; n = 5; m = 5; if ( argc > 1 ) n = atoi(argv[1]); if ( argc > 2 ) m = atoi(argv[2]); for (i = 0; i < MS; i++) for (j = 0; j < MS; j++) free[i][j] = i >= 1 && i <= n && j >= 1 && j <= m; find( 1, 1, 0 ); }