@@ -117,7 +117,7 @@ static void bfs(char **board, int row_size, int col_size,
117
117
}
118
118
}
119
119
120
- void solve (char * * board , int boardRowSize , int boardColSize )
120
+ void solve (char * * board , int boardSize , int * boardColSize )
121
121
{
122
122
int i , j ;
123
123
struct node * new ;
@@ -126,48 +126,48 @@ void solve(char** board, int boardRowSize, int boardColSize)
126
126
INIT_LIST_HEAD (& queue );
127
127
INIT_LIST_HEAD (& free_list );
128
128
129
- for (i = 0 ; i < boardColSize ; i ++ ) {
129
+ for (i = 0 ; i < boardColSize [ 0 ] ; i ++ ) {
130
130
if (board [0 ][i ] == 'O' ) {
131
131
new = node_new (& free_list );
132
132
new -> x = 0 ;
133
133
new -> y = i ;
134
134
list_add_tail (& new -> link , & queue );
135
- bfs (board , boardRowSize , boardColSize , & queue , & free_list );
135
+ bfs (board , boardSize , boardColSize [ 0 ] , & queue , & free_list );
136
136
}
137
137
}
138
138
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' ) {
141
141
new = node_new (& free_list );
142
- new -> x = boardRowSize - 1 ;
142
+ new -> x = boardSize - 1 ;
143
143
new -> y = i ;
144
144
list_add_tail (& new -> link , & queue );
145
- bfs (board , boardRowSize , boardColSize , & queue , & free_list );
145
+ bfs (board , boardSize , boardColSize [ 0 ] , & queue , & free_list );
146
146
}
147
147
}
148
148
149
- for (i = 0 ; i < boardRowSize ; i ++ ) {
149
+ for (i = 0 ; i < boardSize ; i ++ ) {
150
150
if (board [i ][0 ] == 'O' ) {
151
151
new = node_new (& free_list );
152
152
new -> x = i ;
153
153
new -> y = 0 ;
154
154
list_add_tail (& new -> link , & queue );
155
- bfs (board , boardRowSize , boardColSize , & queue , & free_list );
155
+ bfs (board , boardSize , boardColSize [ i ] , & queue , & free_list );
156
156
}
157
157
}
158
158
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' ) {
161
161
new = node_new (& free_list );
162
162
new -> x = i ;
163
- new -> y = boardColSize - 1 ;
163
+ new -> y = boardColSize [ i ] - 1 ;
164
164
list_add_tail (& new -> link , & queue );
165
- bfs (board , boardRowSize , boardColSize , & queue , & free_list );
165
+ bfs (board , boardSize , boardColSize [ i ] , & queue , & free_list );
166
166
}
167
167
}
168
168
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 ++ ) {
171
171
board [i ][j ] = board [i ][j ] == 'P' ? 'O' : 'X' ;
172
172
}
173
173
}
@@ -177,50 +177,51 @@ int main(void)
177
177
{
178
178
int i , j ;
179
179
int row_size = 5 ;
180
- int col_size = 5 ;
180
+ int * col_sizes = malloc ( row_size * sizeof ( int )) ;
181
181
char * * board = malloc (row_size * sizeof (char * ));
182
- board [0 ] = malloc (col_size );
182
+ board [0 ] = malloc (row_size );
183
183
board [0 ][0 ] = 'X' ;
184
184
board [0 ][1 ] = 'X' ;
185
185
board [0 ][2 ] = 'X' ;
186
186
board [0 ][3 ] = 'X' ;
187
187
board [0 ][4 ] = 'X' ;
188
- board [1 ] = malloc (col_size );
188
+ board [1 ] = malloc (row_size );
189
189
board [1 ][0 ] = 'O' ;
190
190
board [1 ][1 ] = 'X' ;
191
191
board [1 ][2 ] = 'O' ;
192
192
board [1 ][3 ] = 'O' ;
193
193
board [1 ][4 ] = 'X' ;
194
- board [2 ] = malloc (col_size );
194
+ board [2 ] = malloc (row_size );
195
195
board [2 ][0 ] = 'O' ;
196
196
board [2 ][1 ] = 'O' ;
197
197
board [2 ][2 ] = 'X' ;
198
198
board [2 ][3 ] = 'O' ;
199
199
board [2 ][4 ] = 'X' ;
200
- board [3 ] = malloc (col_size );
200
+ board [3 ] = malloc (row_size );
201
201
board [3 ][0 ] = 'X' ;
202
202
board [3 ][1 ] = 'X' ;
203
203
board [3 ][2 ] = 'O' ;
204
204
board [3 ][3 ] = 'X' ;
205
205
board [3 ][4 ] = 'X' ;
206
- board [4 ] = malloc (col_size );
206
+ board [4 ] = malloc (row_size );
207
207
board [4 ][0 ] = 'X' ;
208
208
board [4 ][1 ] = 'X' ;
209
209
board [4 ][2 ] = 'O' ;
210
210
board [4 ][3 ] = 'O' ;
211
211
board [4 ][4 ] = 'X' ;
212
212
213
213
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 ++ ) {
215
216
printf ("%c " , board [i ][j ]);
216
217
}
217
218
printf ("\n" );
218
219
}
219
220
printf ("\n" );
220
221
221
- solve (board , row_size , col_size );
222
+ solve (board , row_size , col_sizes );
222
223
for (i = 0 ; i < row_size ; i ++ ) {
223
- for (j = 0 ; j < col_size ; j ++ ) {
224
+ for (j = 0 ; j < col_sizes [ i ] ; j ++ ) {
224
225
printf ("%c " , board [i ][j ]);
225
226
}
226
227
printf ("\n" );
0 commit comments