fork download
  1. #include <stdio.h>
  2.  
  3. typedef struct
  4. {
  5. int column;
  6. int row;
  7. } STK;
  8.  
  9. STK stk[1024];
  10. int top = 0;
  11. int size = 3;
  12.  
  13. void putTo( int i, int j ){}
  14. int checkIfPosIsOK( int i, int j ){ return 1; }
  15. void removeFrom( int i, int j ){}
  16.  
  17. static STK pop()
  18. {
  19. return stk[--top];
  20. }
  21.  
  22. static void push( STK v )
  23. {
  24. stk[top++] = v;
  25. }
  26.  
  27. static int empty()
  28. {
  29. return ( top == 0 );
  30. }
  31.  
  32. void ff( int column )
  33. {
  34. int row;
  35. STK tmp;
  36.  
  37. for( ;; )
  38. {
  39. L1:
  40. for( row = 1; row <= size; ++row )
  41. {
  42. if( checkIfPosIsOK( row, column ) )
  43. {
  44. putTo( row, column );
  45.  
  46. if( column < size )
  47. {
  48. printf( "if: %d\n", column );
  49.  
  50. tmp.column = column;
  51. tmp.row = row;
  52. push( tmp );
  53.  
  54. column = column + 1;
  55.  
  56. goto L1;
  57. L2:
  58. printf( "if: %d\n", column );
  59. }
  60. else
  61. {
  62. printf( "else: %d\n", column );
  63. }
  64.  
  65. removeFrom( row, column );
  66. }
  67. }
  68.  
  69. if( !empty() )
  70. {
  71. tmp = pop();
  72. column = tmp.column;
  73. row = tmp.row;
  74.  
  75. goto L2;
  76. }
  77. else
  78. break;
  79. }
  80. }
  81.  
  82. int main()
  83. {
  84. ff( 4 );
  85.  
  86. return 0;
  87. }
  88.  
Success #stdin #stdout 0s 1840KB
stdin
Standard input is empty
stdout
else: 4
else: 4
else: 4