#include #include #define RIGHT 0 #define BOTTOM 1 #define LEFT 2 #define TOP 3 int main() { int matrix[5][5] = {{11,12,13,14,15},{16,17,18,19,20},{21,22,23,24,25},{26,27,28,29,30},{31,32,33,34,35}},check[5][5],i=0,j=0,direction = RIGHT,block[4] = {0,0,1,1}; for(i=0;i<5;i++) { for(j=0;j<5;j++) check[i][j] = 0; } i=0;j=0; printf("\n"); while(1) { printf("%d\t",matrix[i][j]); check[i][j] = 1; if(direction == RIGHT ) { if( j<4 && check[i][j+1] == 0) { j=j+1; } else { direction = BOTTOM; if(i<4 && check[i+1][j] == 0) { i = i+1; } else { break; } } } else if(direction == BOTTOM ) { if( i<4 && check[i+1][j] == 0) { i=i+1; } else { direction = LEFT; if(j>0 && check[i][j-1] == 0) { j = j-1; } else { break; } } } else if(direction == LEFT ) { if( j>0 && check[i][j-1] == 0) { j=j-1; } else { direction = TOP; if(i>0 && check[i-1][j] == 0) { i = i-1; } else { break; } } } else if(direction == TOP ) { if( i>0 && check[i-1][j] == 0) { i=i-1; } else { direction = RIGHT; if(j<4 && check[i][j+1] == 0) { j = j+1; } else { break; } } } } printf("\n"); return 0; }