알고리즘 배열 공부중 궁금증이 있어 질문드립니다.
207페이지 행렬변환 예제 순서도의
두번째 반복문에서 M이 Row보다 클 경우
B배열의 행변수 L은 1증가시켜 L=L+1이고,
열변수 M은 초기화하여 M=0으로 풀었는데,
디버깅해보니
i J L M A(l,J)
1 1 1 1 A(1,1) - > B(1,1)
2 2 A(1,2) - > B(1,2)
3 3 A(1,3) - > B(1,3)
2 1 4 A(2,1) - > B(1,4)
2 5 A(2,2) - > B(1,5)
3 2 6 ->0 A(2,3) -> B(2,0) --- M이 Row(5)보다 큰 경우에서 L을 1증가하고 M을초기화하면
이런 결과가 나오는 것 같아요.
A(2,3)은 B(2,1)로 치환되어야 하는데 M=0이 대입되어
B(2,0)이 되니 M=1이 되어야 하는게 아닌가요?
** 반복문에서는 행변수L 1증가, 열변수M 초기화를 각각 하고나면
다시 반복문 시작부로 돌아가 새로운 J값으로 M을 1증가시켜
A(3,3) -> B(2,1)으로 이어지게 되지 않나요?
책의 정답이 맞다면, 제가 어느부분에서 디버깅을 잘못한 것인지 좀 알려주세요.
(비전공자라 두서없이 질문드려 죄송합니다.^^;;)
안녕하세요.
M >= ROW에서 처음 YES가 되는 경우는
i가 2
J가 3
L이 1
입니다.
이 때 M이 ROW와 같아져 L은 2로 증가하고 M은 0이 됩니다.
이 상태에서 안쪽 반복을 수행하여
M은 M+1에 의해 1이 된 후 배열에 저장되므로
A(2,3) -> B(2,0)이 아니라 B(2,1)이 됩니다. <- 이 부분에서 혼동하셨네요.
오늘도 즐거운 하루 되세요.
"-
*2011-05-25 09:39:50
안녕하세요.
M >= ROW에서 처음 YES가 되는 경우는
i가 2
J가 3
L이 1
입니다.
이 때 M이 ROW와 같아져 L은 2로 증가하고 M은 0이 됩니다.
이 상태에서 안쪽 반복을 수행하여
M은 M+1에 의해 1이 된 후 배열에 저장되므로
A(2,3) -> B(2,0)이 아니라 B(2,1)이 됩니다. <- 이 부분에서 혼동하셨네요.
오늘도 즐거운 하루 되세요.
"