2010-03-31 4 views
3

톱니 모양의 배열을 다른 배열로 복사하려면 어떻게해야합니까?다른 톱니 모양의 배열 ontop 복사

0, 0, 0, 0, 0, 0, 0 
0, 0, 0, 0, 0, 0, 0 
0, 0, 0, 0, 0, 0, 0 
0, 0, 0, 0, 0, 0, 0 
0, 0, 0, 0, 0, 0, 0 

과의 4x3의 배열 : I는 (1,1)와 같은 특정 시작점을 지정할 수 있도록하고 싶습니다

0,1,1,0 
1,1,1,1 
0,1,1,0 

에 예를 들어, 나는의 5X7 배열이

0, 0, 0, 0, 0, 0, 0 
0, 0, 1, 1, 0, 0, 0 
0, 1, 1, 1, 1, 0, 0 
0, 0, 1, 1, 0, 0, 0 
0, 0, 0, 0, 0, 0, 0 

은 무엇 이렇게하는 가장 좋은 방법이 될 것이다 : 내 모두 0 배열하고, 그래서 나는 결과 등을했을 ontop 그것의 나의 두 번째 배열을 복사?

+2

당신의 배열은 항상 직사각형? 그렇다면 지그재그 배열 대신 직사각형 배열을 사용하는 것이 어떻습니까? –

+0

관측 - 예제 배열은 모두 직사각형입니다. –

답변

2

예제의 제곱 특성으로 인해 톱니파 대신 2D 배열이 더 적합합니다. 그러나 어느 쪽이든, 당신은 분명히 구식 방식으로 그것을 반복 할 수 있습니다. (테스트되지 않은)

for (int i = 0; i < secondArray.Length; i++) 
{ 
    for (int j = 0; j < secondArray[0].Length; j++) 
    { 
     firstArray[startingRow + i][startingColumn + j] = secondArray[i][j]; 
    } 
} 

편집 비슷해 : 마크처럼, 나는 또한 약간 다른하지만 ​​같은 라인을 따라 약간의 개선이 있었다.

for (int i = 0; i < secondArray.Length; i++) 
{ 
    secondArray[i].CopyTo(firstArray[startingRow + i], startingColumn); 
} 
+0

+1 : 편집시 솔루션은 사각형이 아닌 배열에서도 사용할 수 있습니다. :) –

2

이 당신의 입력이 직사각형없는 경우에도 작동합니다 :

void copy(int[][] source, int[][] destination, int startRow, int startCol) 
{ 
    for (int i = 0; i < source.Length; ++i) 
    { 
     int[] row = source[i]; 
     Array.Copy(row, 0, destination[i + startRow], startCol, row.Length); 
    } 
} 
+0

좋은 편집. 내 내부 루프 대신'secondArray [i] .CopyTo (firstArray [startingRow + i], startingColumn); '를 추가하려고했습니다. 네가 날 이겼어! –

+0

@Anthony : 실제로 CopyTo는 매우 좋습니다. 변경해야합니다. –