Which part is incorrect?

조회 수: 6 (최근 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에서 Simulink에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by