Cod sursa(job #1318264)

Utilizator gabrielinelusGabriel-Robert Inelus gabrielinelus Data 15 ianuarie 2015 19:52:16
Problema 12-Perm Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <cstdio>

using namespace std;

int used[100],v[100],N;
int cnt;

void print()
{
    for(int i = 1; i <= N; ++i)
        printf("%d ",v[i]);
    printf("\n");
}
int max(int a,int b)
{
    if(a > b) return a;
    return b;
}

void back(int k)
{
    if(k == N+1)
    {
        ++cnt;
        ///print();
        return;
    }
    for(v[k] = max(v[k-1] - 2,1); v[k] <= v[k-1] + 2 && v[k] <= N; ++v[k])
        if(!used[v[k]])
        {
            used[v[k]] = 1;
            back(k+1);
            used[v[k]] = 0;
        }
}

int main()
{
    freopen("12perm.in","r",stdin);
    freopen("12perm.out","w",stdout);

    scanf("%d",&N);

    for(int i = 1; i <= N; ++i)
    {
        v[1] = i;
        used[i] = 1;
        back(2);
        used[i] = 0;
    }
    printf("%d\n",cnt);
    return 0;
}