행렬을 변환하는 간단한 프로그램을 작성해야한다고 가정합니다. 각 요소는 인접 요소의 합계 여야합니다.행렬의 가장자리를 올바르게 처리하는 방법
행렬의 가장자리를 고려하여 "올바른"(가장 일반적인 가독성, 가장 효과적인 방법) 방법은 무엇입니까? 내가 생각할 수있는이 달성의
두 명백한 명백한 방법 : 첫 번째
- 핸들 코너 (4 별도의 줄), 나머지 가장자리를 할 4 개 루프를 사용 후 나머지 에 대한 표준 루프를 사용
- 전체 행렬에 대해 하나의 루프를 사용하여
if
이 중간에 있는지 또는 가장 큰 경우인지 확인하십시오.
첫 번째 문제는 더 빠르지 만 (제 생각에는) 4 라인과 5 개의 루프가 필요합니다.
더 세련된 방법이 있습니까? 내가 C++로 코딩했기 때문에 나는 이것을 C++로 태그를 붙였습니다. 그리고 저는 현재 삼항 연산자 ?:
이 귀여운 솔루션을 작성하는데 유용 할 것이라는 느낌을 가지고 있습니다.
솔루션은 복잡한 규칙 (오른쪽/왼쪽/아래쪽 셀 하나를 찾는 것이 아니라 특정 종류의 재귀를 수행하는 경우)에 맞게 조정할 수있는 경우 보너스 포인트입니다. 그래도 그것이 많이 바뀌면 확실하지 않습니다.
"각 요소는 인접 요소의 합계 여야합니다." 3 개 이상의 요소가있는 행렬의 경우 엔트리가 어떻게 모든 0이 아닌 다른 것이 될 수 있습니까? 예를 들어 줄 수 있습니까? – Matt
은 가장자리를 함수로 요약하여 캡슐화합니다. 실제로 작동하면 작동합니다. 우아함이 항상 선호되는 것은 아니지만 – Ben
@Matt 죄송합니다. 매트릭스를 변형하려고했습니다. 요소는 * 인접 요소의 합이되어야합니다. 우리는 각 원소를 이웃 원소들의 합으로 교환하는 새로운 매트릭스를 만들고 있습니다. 그것은 단지 무작위적인 예입니다. 문제의 핵심은 이웃 셀을보고 예외 인 가장자리를 처리하는 것입니다. –