@@ -117,7 +117,7 @@ static void bfs(char **board, int row_size, int col_size,
117117 }
118118}
119119
120- void solve (char * * board , int boardRowSize , int boardColSize )
120+ void solve (char * * board , int boardSize , int * boardColSize )
121121{
122122 int i , j ;
123123 struct node * new ;
@@ -126,48 +126,48 @@ void solve(char** board, int boardRowSize, int boardColSize)
126126 INIT_LIST_HEAD (& queue );
127127 INIT_LIST_HEAD (& free_list );
128128
129- for (i = 0 ; i < boardColSize ; i ++ ) {
129+ for (i = 0 ; i < boardColSize [ 0 ] ; i ++ ) {
130130 if (board [0 ][i ] == 'O' ) {
131131 new = node_new (& free_list );
132132 new -> x = 0 ;
133133 new -> y = i ;
134134 list_add_tail (& new -> link , & queue );
135- bfs (board , boardRowSize , boardColSize , & queue , & free_list );
135+ bfs (board , boardSize , boardColSize [ 0 ] , & queue , & free_list );
136136 }
137137 }
138138
139- for (i = 0 ; i < boardColSize ; i ++ ) {
140- if (board [boardRowSize - 1 ][i ] == 'O' ) {
139+ for (i = 0 ; i < boardColSize [ 0 ] ; i ++ ) {
140+ if (board [boardSize - 1 ][i ] == 'O' ) {
141141 new = node_new (& free_list );
142- new -> x = boardRowSize - 1 ;
142+ new -> x = boardSize - 1 ;
143143 new -> y = i ;
144144 list_add_tail (& new -> link , & queue );
145- bfs (board , boardRowSize , boardColSize , & queue , & free_list );
145+ bfs (board , boardSize , boardColSize [ 0 ] , & queue , & free_list );
146146 }
147147 }
148148
149- for (i = 0 ; i < boardRowSize ; i ++ ) {
149+ for (i = 0 ; i < boardSize ; i ++ ) {
150150 if (board [i ][0 ] == 'O' ) {
151151 new = node_new (& free_list );
152152 new -> x = i ;
153153 new -> y = 0 ;
154154 list_add_tail (& new -> link , & queue );
155- bfs (board , boardRowSize , boardColSize , & queue , & free_list );
155+ bfs (board , boardSize , boardColSize [ i ] , & queue , & free_list );
156156 }
157157 }
158158
159- for (i = 0 ; i < boardRowSize ; i ++ ) {
160- if (board [i ][boardColSize - 1 ] == 'O' ) {
159+ for (i = 0 ; i < boardSize ; i ++ ) {
160+ if (board [i ][boardColSize [ i ] - 1 ] == 'O' ) {
161161 new = node_new (& free_list );
162162 new -> x = i ;
163- new -> y = boardColSize - 1 ;
163+ new -> y = boardColSize [ i ] - 1 ;
164164 list_add_tail (& new -> link , & queue );
165- bfs (board , boardRowSize , boardColSize , & queue , & free_list );
165+ bfs (board , boardSize , boardColSize [ i ] , & queue , & free_list );
166166 }
167167 }
168168
169- for (i = 0 ; i < boardRowSize ; i ++ ) {
170- for (j = 0 ; j < boardColSize ; j ++ ) {
169+ for (i = 0 ; i < boardSize ; i ++ ) {
170+ for (j = 0 ; j < boardColSize [ i ] ; j ++ ) {
171171 board [i ][j ] = board [i ][j ] == 'P' ? 'O' : 'X' ;
172172 }
173173 }
@@ -177,50 +177,51 @@ int main(void)
177177{
178178 int i , j ;
179179 int row_size = 5 ;
180- int col_size = 5 ;
180+ int * col_sizes = malloc ( row_size * sizeof ( int )) ;
181181 char * * board = malloc (row_size * sizeof (char * ));
182- board [0 ] = malloc (col_size );
182+ board [0 ] = malloc (row_size );
183183 board [0 ][0 ] = 'X' ;
184184 board [0 ][1 ] = 'X' ;
185185 board [0 ][2 ] = 'X' ;
186186 board [0 ][3 ] = 'X' ;
187187 board [0 ][4 ] = 'X' ;
188- board [1 ] = malloc (col_size );
188+ board [1 ] = malloc (row_size );
189189 board [1 ][0 ] = 'O' ;
190190 board [1 ][1 ] = 'X' ;
191191 board [1 ][2 ] = 'O' ;
192192 board [1 ][3 ] = 'O' ;
193193 board [1 ][4 ] = 'X' ;
194- board [2 ] = malloc (col_size );
194+ board [2 ] = malloc (row_size );
195195 board [2 ][0 ] = 'O' ;
196196 board [2 ][1 ] = 'O' ;
197197 board [2 ][2 ] = 'X' ;
198198 board [2 ][3 ] = 'O' ;
199199 board [2 ][4 ] = 'X' ;
200- board [3 ] = malloc (col_size );
200+ board [3 ] = malloc (row_size );
201201 board [3 ][0 ] = 'X' ;
202202 board [3 ][1 ] = 'X' ;
203203 board [3 ][2 ] = 'O' ;
204204 board [3 ][3 ] = 'X' ;
205205 board [3 ][4 ] = 'X' ;
206- board [4 ] = malloc (col_size );
206+ board [4 ] = malloc (row_size );
207207 board [4 ][0 ] = 'X' ;
208208 board [4 ][1 ] = 'X' ;
209209 board [4 ][2 ] = 'O' ;
210210 board [4 ][3 ] = 'O' ;
211211 board [4 ][4 ] = 'X' ;
212212
213213 for (i = 0 ; i < row_size ; i ++ ) {
214- for (j = 0 ; j < col_size ; j ++ ) {
214+ col_sizes [i ] = row_size ;
215+ for (j = 0 ; j < col_sizes [i ]; j ++ ) {
215216 printf ("%c " , board [i ][j ]);
216217 }
217218 printf ("\n" );
218219 }
219220 printf ("\n" );
220221
221- solve (board , row_size , col_size );
222+ solve (board , row_size , col_sizes );
222223 for (i = 0 ; i < row_size ; i ++ ) {
223- for (j = 0 ; j < col_size ; j ++ ) {
224+ for (j = 0 ; j < col_sizes [ i ] ; j ++ ) {
224225 printf ("%c " , board [i ][j ]);
225226 }
226227 printf ("\n" );
0 commit comments