/*
2018.9.28
AQY笔试:1-N 的幂集中集合个数 去除含相邻数字的集合
比如1,2,3 可选空,1,2,3,13五种
*/
#include <iostream>
#include <map>
#include <set>
#include <stack>
#include <vector>
#include <queue>
#include <cstring>
#include <cstdio>
using namespace std;
typedef long long ll;
#define mem(a) memset(a,0,sizeof(a))
int ans=0;
int n;
int visit[95];
void dfs(int data){
//if(data!=0) buf[depth]=data;//printf("%d",data);
ans++;
if(data==n || data==n-1) return;
for(int i=1;i<=n;++i){
if(data!=0){
if(visit[i]==1 || data>=i ) continue;
if(data==i-1) continue;
}
visit[i]=1;
dfs(i);
visit[i]=0;
}
}
int main(){
scanf("%d",&n);
memset(visit,0,sizeof(visit));
//一开始写的dfs(1)坑惨我了。。
dfs(0);//必须从0开始,不然无法回溯到以2、3....开头的组合上
//ans++;因为从0开始,所以默认已经多加了空集
cout<<ans;
return 0;
}
再给我几分钟就看出错误来了。。。哈哈哈。。。考试的时候脑抽了