Which part is incorrect?

조회 수: 2 (최근 30일)
Ryan W
Ryan W 2022년 10월 15일
답변: Hiro Yoshino 2022년 10월 15일
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
  댓글 수: 1
Ghazwan
Ghazwan 2022년 10월 15일
can you explain more?

댓글을 달려면 로그인하십시오.

답변 (1개)

Hiro Yoshino
Hiro Yoshino 2022년 10월 15일
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

카테고리

Help CenterFile Exchange에서 Matrices and Arrays에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by