#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>

int abs(int i)
{
    if(i < 0)
        return -i;
    return i;
}


//대각, 수직, 수평 > 퀸들이 서로 공격하지 못하는 조건, promising
//1 > 배치 가능
//0 > 배치 불가능
int promising(int i, int col[10])
{
    int j;
    while (j < i)
    {
        if(col[i] == col[j] || abs(col[i] - col[j]) == (i - j))
            return 0;
        j++;            
    }return 1;
}




void print_solution(int col[10])
{
    int i =0;
    while(i < 10)
        printf("%d", col[i]);
    printf("\n");
}



int ten_queen(int i, int col[10], *result)
{
    int j = 0;
    
    if(i == 10){
        print_solution(col);
        (*result)++;
    }
        
    else{
        while(j < 10)
        {
            col[i] = j;
            if(promising(i, col))
                ten_queen(i+1, col, result);          
            j++;
        }        
    }
        
    return *result;
}


int ft_ten_queens_puzzle(void)
{
    int col[10] = {0};
    int result = 0;
    
    result = ten_queen(0, col, &result);

    return result;
}

int main()
{
    ft_ten_queens_puzzle();

    return 0;
}

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: