Cod sursa(job #1336184)

Utilizator code_masterStefan Codrin Ionescu code_master Data 6 februarie 2015 21:33:05
Problema Problema Damelor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <iostream>
#include <cmath>
#define MAX 20

int n,v[MAX],sol;

int valid(int k);
int solutie(int k);
void afisare();
void BK(int k);

using namespace std;

int main()
{
    cin>>n;
    BK(1);
}

void BK(int k)
{
    int i;
    for (i = 1;i<=n;i++)
    {
        v[k] = i;
        if (valid(k) == 1)
        {
            if (solutie(k) == 1)
                afisare();

            else BK(k+1);
        }
    }
}

int valid(int k)
{
    int i;
    for (i = 1;i<=k-1;i++)
        if (v[i] == v[k] || abs(v[k] - v[i]) == k-i) return 0;
    return 1;
}

int solutie(int k)
{
    if (k == n) return 1;
    return 0;
}

void afisare()
{
    int i,j,x;
    sol++; cout<<"\n Solutia: "<<sol<<'\n';
    for (i=1;i<=n;i++)
        {for (j=1;j<=n;j++)
            if (v[i]==j) cout<<"D ";
            else cout<<"_ ";
            cout<<'\n';
        }
}