2016년 2월 28일 일요일

델타를 이용한 2차 배열 탐색(using delta search)


아래와 같은 2차원 평면이 array가 주어질때 4개 혹은 8개 등 주변의 점들을 조건 검사할때 사용하는 방법입니다.
주변의 점들을 조건검사할때 비교하나당 if 조건문이 하나씩 사용하게 됩니다.

0
0
1
0
0
0
1
1
0
0
1
1
X,Y
0
1
0
0
1
0
0
0
0
1
0
0

아래 방법을 이용하면 코딩이 단순해집니다.
성능의 개선은 얻을 수 없습니다만 여러 방향 검사 추가시 코딩이 편해지게 됩니다.
아래 예제는 4방향 검사입니다.

Cpasted just now: 
#include <stdio.h>

int array[5][5]={
{0,0,1,0,0},
{0,1,1,0,0},
{1,1,1,0,1},
{0,0,1,0,0},
{0,0,1,0,0},
};

int dx[]={0,0,-1,1};
int dy[]={-1,1,0,0};

main()
{
    int x=2,y=2,j;
    int count1 = 0;
    for(j=0;j<4;j++){
        if( array[y+dy[j]][x+dx[j]] == 1 ){
            count1++;
        }
    }
    printf("%d\n",count1);
    return 0;
}


Output:
1
3





댓글 없음:

댓글 쓰기