1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| void backtrace( matrix_t m, int col, path_list_t path_list, int max_holes, int min_length, visit_func_t visit)
{
if min_length>m.width-col return car il n'y a plus assez de colonnes
if length(path_list)>=min_length visit(m, path_list);
for(row=0; row<m.height && m[row][col]!=-1; ++row)
if is_empty(path_list)
push( (row,col) , path_list )
backtrace(m, col+1, path_list, max_holes,min_length, visit)
pop(path_ist)
else if m[row][col].val=head(path_list)+3
push( (row,col) , path_list )
backtrace(m, col+1, path_list, max_holes,min_length, visit)
pop(path_ist)
else if max_holes!=0
backtrace(m, col+1, path_list, max_holes-1,min_length, visit)
} |
Partager