2011-02-16 5 views
0

하나의 2D 배열을 가지고 있다고 가정하면대각선으로 읽은 NxN 행렬을 되 돌리는 방법은 무엇입니까?

배열에 누군가가 대각선으로 읽은 'char input [N] [N]'배열이 있습니다.

은 '[N]는 숯 input_original [N]을'대각선 '읽기 문자 입력 [N] [N] 배열

에서 대각선 읽은 후, 내 입력은

내 목표 원의 배열을 재현되고

ADB

CEG ------------------->

그리고 이제

0으로 만들기 위해 원하는

HFI를 매트릭스

ABC

------------------- DEF> 행렬 B (input_original 어레이)

GHI

행렬 A가이고

행렬 B의 대각선 읽기 출력 (db ceg hf i -> 행렬로 만들었습니다)

모든 제안을 환영합니다.

+0

코드 또는 알고리즘을 묻는 질문이 있으십니까? 어느 쪽이든, 나는 하나의 예제가 충분하지 않다고 생각한다. – ardiyu07

+0

행렬을 "대각선으로 읽는"것은 무엇을 의미 하는가? –

+0

나를위한 알고리즘 수준 로직도 괜찮습니다. –

답변

3

대각선 인 경우 행렬을 통해 "경로"를 계산할 것입니다. 이것은

1--2 3--4 5 
////| 
//// | 
6 7 8 9 10 
|//// 
|////
11 12 13 14 15 
////| 
//// | 
16 17 18 19 20 
|//// 
|//// 
21 22-23 24-25 

, 당신은 당신이 읽을 순서로 인덱스를 저장합니다.이 작업을 완료 한 후에, 당신은이 지표에 따라 행렬을 채울 수 있습니다.

그래서이 경우 가장 어려운 것은 경로 계산 방법입니다. 다음과 같이이 작업을 수행 할 수 있습니다

  • 오른쪽 (R)
  • 바로 (UR) 아래
  • (D)
  • : 우선을, 우리는 경로가 네 방향의 독점적 conists 인식 아래 왼쪽 (DL)

는 또한 우리가 방향의 일부 주문이 허용되는 것을 인식 :

  • R-DL
  • DL-DL
  • DL-D
  • DL-R
  • D-UR
  • UR-UR
  • UR-R

하여이 지식 경로를 계산하는 데 문제가 없습니다. 마지막 방향과 현재 위치 만 저장하면됩니다.그런 다음, 우리가 다음 방향을 다음과 같은 방법으로 계산해야한다 : 우리는 UR을 시도하고 그것이 불가능하면 마지막 방향이 DL 있다면, 우리는 R.

  • 도보

    • 마지막 방향은 UR 인 경우를, 우리는 DL을 시도하고 가능하지 않다면 D를 걸겠습니다. 불가능하다면 R을 걸으십시오.

    나는 아무 것도 망치지 않았 으면 좋겠지 만, 그 방법은 상당히 실용적이라고 생각합니다. 그것.

  • 관련 문제