Which part is incorrect?

1 view (last 30 days)
Ryan W
Ryan W on 15 Oct 2022
Answered: Hiro Yoshino on 15 Oct 2022
function [indices] = kWeakestRows(mat,k)% function
disp("The number of soldiers in each row is:")
answer = [];
for i = 1:length(mat)
fprintf("- Row %d: %d\n",i,sum(mat(i,:)));
answer(end + 1,:) = [sum(mat(i,:)),i];
end
answer = sortrows(answer,1);
indices = [];
for i = 1:k
indices(end + 1) = answer(i,2);
end
fprintf("The rows ordered from weakest to strongest are ");
disp(indices);
end

Answers (1)

Hiro Yoshino
Hiro Yoshino on 15 Oct 2022
I would do this much more simply:
mat = [1,1,0,0,0;
1,1,1,1,0;
1,0,0,0,0;
1,1,0,0,0;
1,1,1,1,1];
% sum in row direction
answer = sum(mat,2)
answer = 5×1
2 4 1 2 5
% sort and obtain the indices
[sMat, idx] = sort(answer,"ascend");
disp("The rows ordered from weakest to strongest are")
The rows ordered from weakest to strongest are
idx
idx = 5×1
3 1 4 2 5
If you want to extract first k then:
k = 3;
idx(1:k)
ans = 3×1
3 1 4

Categories

Find more on Startup and Shutdown 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!