Cod sursa(job #1121677)

Utilizator c0rn1Goran Cornel c0rn1 Data 25 februarie 2014 13:38:47
Problema Dame Scor 15
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <iostream>
#include <stdio.h>
#define abs(x) ((x)<0?(-(x)):(x))

using namespace std;

FILE *f1=freopen("dame.in", "r", stdin);
FILE *f2=freopen("dame.out", "w", stdout);
int n, n2, sol[1001], ok=1;

void afis()
{
    for (int i=1; i<=n2; i++)
    {
        printf("%d %d\n", i, sol[i]);
//        for (int j=1; j<=n; j++)
//            if (j==sol[i])
//                printf("R");
//            else
//                printf("*");
//        printf("\n");
    }
    printf("\n\n");
}

int e_ok(int k, int i)
{
    for (int j=1; j<k; j++)
        if (i==sol[j] || abs(k-j)==abs(i-sol[j]))
            return 0;
    return 1;
}

void bt(int k)
{
    if (k==n2+1 && ok==1)
    {
        afis();
        ok=0;
        return;
    }
    for (int i=1; i<=n; i++)
        if (e_ok(k, i))
        {
            sol[k]=i;
            bt(k+1);
        }
}

int main()
{
    scanf("%d", &n);
    if (n<3)
    {
        printf("1\n");
        n2=1;
    }
    else if (n==3)
    {
        printf("2\n");
        n2=2;
    }
    else
    {
        printf("%d\n", n);
        n2=n;
    }
    bt(1);
    return 0;
}