NQUEEN 컴파일 실패때문에 질문드려요

  • 샹아바
    샹아바
    #include <stdio.h>
    #include <math.h>
    
    int board[12] = { 0 },N,result;
    
    int collision(int i) { 
        int k = 0, promising = 1;
        if (i == 0) 
            return promising;
    
        while (k < i && promising) {
            if (board[i] == board[k] ||  (abs(board[i] - board[k]) == abs(i - k)) )
                promising = 0;
            k++;
        }
        return promising;
    }
    int queen(int y) {
        int i;
        if (y == N)
            result++;
        else
            for (i = 0; i < N; i++) {
                board[y] = i;
                if (collision(y)) 
                    queen(y + 1);
            }
    }
    int main() {
        unsigned int C;
        scanf("%d", &C);
    
        while (C--) {
            result = 0;
            scanf("%d", &N);
            queen(0);
            printf("%d\n", result);
        }   
    }
    

    submission.c: In function ‘collision’:
    submission.c:12:3: error: implicit declaration of function ‘abs’ [-Wimplicit-function-declaration]
    if (board[i] == board[k] || (abs(board[i] - board[k]) == abs(i - k)) )
    ^
    submission.c: In function ‘main’:
    submission.c:32:2: warning: format ‘%d’ expects argument of type ‘int *’, but argument 2 has type ‘unsigned int *’ [-Wformat=]
    scanf("%d", &C);
    ^
    submission.c:32:2: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result [-Wunused-result]
    submission.c:35:3: warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result [-Wunused-result]
    scanf("%d", &N);
    ^

    VS2015와 ideone으로 테스트했을땐 오류가없는데
    답변제출을하면 저런 오류를 뱉습니다
    math함수가 제대로 include안되어 abs함수가 안불러지는것같은데
    다른 분들이 쓴걸보면 math함수를 씀에도 잘 되고 scanf부분도 큰문제는 없는것 같은데
    제가 어떤부분에서 틀린지좀 여쭤봅니다


    8년 전
1개의 댓글이 있습니다.
  • Being
    Being

    abs()stdlib.h에 있습니다.


    8년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.