Index exceeds matrix dimensions error?

1 view (last 30 days)
Aaron Cook
Aaron Cook on 20 Sep 2017
Answered: Image Analyst on 20 Sep 2017
Hello everyone, my code is giving me the error "Index exceeds matrix dimensions. Error in queens (line 11). if test_board(row,col) == 0"
Im trying to attempt backtracking but cant even get passed looping through my array to place queens because of this error.
Any help would be appreciated, thanks!
function [queens] = queens(size)
test_board = zeros(size,size);
final_board = zeros(size,size);
row = 1; col = 1;
queen_counter = 0;
%Loop until "size" number of queens have been successfully placed
while (queen_counter < size)
%Find first safe space and place queen
if test_board(row,col) == 0
test_board(row,col) = 1;
final_board(row,col) = 1;
%Attacking the row and column in which the queen was placed
test_board(:,col) = 8;
test_board(row,:) = 8;
%Iterate through using temporary variables to keep real
%row and column element in place
temp_row = row;
temp_col = col;
%Attacking lower diagonal
while (temp_col < size && temp_row < size)
temp_row = temp_row + 1;
temp_col = temp_col + 1;
test_board(temp_row,temp_col) = 8;
end
temp_row = row;
temp_col = col;
%Attacking lower diagonal
while (temp_col < size && temp_row > 1)
temp_row = temp_row - 1;
temp_col = temp_col + 1;
test_board(temp_row,temp_col) = 8;
end
%Move to next column after successful queen placement
col = col + 1;
queen_counter = queen_counter + 1;
%Move down one in column if first space isn't safe
else
row = row + 1;
end
end
disp(test_board); disp(final_board);
end

Answers (1)

Image Analyst
Image Analyst on 20 Sep 2017
DO NOT use size as the name of your variable. It's the name of a vitally important built-in function, that you just overwrote.
Whatever you passed in for size, in your loop either row or column is greater than that, so it throws an error.

Categories

Find more on Matrices and Arrays in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!