Ln Go

N Queen Algorithm 본문

c++

N Queen Algorithm

Ln Ro 2022. 2. 24. 13:32
#include <iostream>
#include <cmath>  //double type value absolute
#include <cstdlib>  //int type value absolute

using namespace std;

int board[20], cnt;

void add(int n)
{
	++cnt;
}
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))  //place return == 1 이면 
		{
			board[row] = column;
			if(row == n)
			{
				add(n);  // find solution => call add fuction
			}
			else
			{
				queen(row +1, n);  // not find solution => call queen(row + 1, n); Recursive Fuction
			}
		}
	}
}

int main() {
	int n;
	cin >> n;
	queen(1,n);
	cout << "N Queen Algorithm "<< cnt <<endl;
	return 0;
}

'c++' 카테고리의 다른 글

vector 선언 3종류  (0) 2022.06.28
c++ 문자열 대문자로 출력  (0) 2021.09.15
Online Compile Site  (0) 2021.06.03
C++ 2중 for문 등차수열 합 출력  (0) 2021.05.01
비쥬얼 스튜디오 다운로드  (0) 2020.04.13
Comments