Ln Go

N Queen 좌표 출력 본문

C언어

N Queen 좌표 출력

Ln Ro 2021. 5. 23. 13:52

#include<stdio.h>
#include<math.h>

int board[20], count;

int main()
{
    int n, i, j;
    void queen(int row, int n);

    printf(" - N Queens Problem Using Backtracking -");
    printf("\n\nEnter number of Queens:");
    scanf_s("%d", &n);
    queen(1, n);
    return 0;
}


void print(int n)
{
    int i, j;
    printf("\n\nSolution %d:\n\n", ++count);

    

    for (i = 1; i <= n; ++i)
    {
        
        for (j = 1; j <= n; ++j) 
        {
            if (board[i] == j)
                printf("<%d, %d> ",i,board[i]); 
           
        }
    }
}


int place(int row, int column)
{
    int i;
    for (i = 1; i <= row - 1; ++i)
    {
   
        if (board[i] == column)
            return 0;
        else
            if (abs(board[i] - column) == abs(i - row))
                return 0;
    }

    return 1; 
}


void queen(int row, int n)
{
    int column;
    for (column = 1; column <= n; ++column)
    {
        if (place(row, column))
        {
            board[row] = column; 
            if (row == n) 
                print(n); 
            else 
                queen(row + 1, n);
        }
    }
}

'C언어' 카테고리의 다른 글

구조체 공용체  (0) 2021.06.01
c언어 최대 최소  (0) 2021.05.26
c언어 콘서트 배열 programming p292 2번  (0) 2020.04.13
c언어 콘서트 배열 programming p292 1번  (0) 2020.04.13
c언어 로또 중복x, 작은수  (0) 2019.10.01
Comments