c언어 sparse matrix 질문합니다!

  • sparse matrix: 0이 아닌 값을 가진 원소들을 ordered list로 표현하면 원소들의 순서는 행의 인덱스가 증가하는 순서이며, 행의 인덱스가 같은 경우 열의 인덱스가 증가하는 순서이다.

두 행렬의 원소들의 첨자 (i,j)와 (x,y)과 주어졌을 때 원소들의 순서를 비교하는 function은 어떻게 작성할까요?

int Compare(int i, int j, int x, int y) if((i,j) < (x,y)) return -1 else if ((i,j)>(x,y)) return 1 else return 0 이런 구조로 풀 수 있다는 힌트는 받았는데요 ! 진행을 못하겠습니다 ㅠ

1답변

  • 좋아요

    1

    싫어요
    채택취소하기
    int pos(int sparseMatrix[][2], int size, int r, int c)
    {
        int ret = 0;
    
        for(int i = 0; i < size; i++)
        {
            if(희소행렬의 i번째 원소의 행이 r보다 작다)
            {
                ret += 1;
            }
            else if(희소행렬의 i번째 원소의 행이 r과 같다)
            {
                if(희소행렬의 i번째 원소의 열이 c보다 작다)
                {
                    ret += 1;
                }
            }
        }
    
        return ret;
    }
    

    ※ 변수 소개

    sparseMatrix[][2] : 희소행렬의 원소들을 저장한 배열. (행, 열)의 값들을 저장.

    ex) sparseMatrix[0][0] : 첫번째 원소의 행, sparseMatrix[0][1]: 첫번째 원소의 열

    size : 해당 희소행렬의 원소들의 수

    r : 위치를 알고 싶은 원소의 행

    c : 위치를 알고 싶은 원소의 열

    ret : 해당 원소의 위치

    위의 함수를 사용하여 각각의 원소들의 위치를 구한 다음 비교하시면 됩니다.

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.