Pagini recente » Cod sursa (job #2839804) | Cod sursa (job #2101833) | Cod sursa (job #2833775) | Cod sursa (job #2984883) | Cod sursa (job #1318264)
#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;
}