记录编号 |
598205 |
评测结果 |
AAAAA |
题目名称 |
[HAOI 2004模拟]数列问题 |
最终得分 |
100 |
用户昵称 |
chenbp |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.108 s |
提交时间 |
2025-01-22 17:16:03 |
内存使用 |
3.35 MiB |
显示代码纯文本
#include <iostream>
#include <cstdio>
using namespace std;
int n;
int ans[50];
int tot=0;
////////////0 1 2 3 4 5 6 7 8 9 10111213141516171819202122232425262728293031323334353637383940
bool p[50]={0,0,1,1,0,1,0,1,0,0,0,1,0,1,0,0,0,1,0,1,0,0,0,1,0,0,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0};
bool vis[50];
void dfs(int t){
if(t==n+1){
for(int i=1;i<=n;i++){
cout<<ans[i]<<" ";
}
cout<<endl;
tot++;
return ;
}
for(int i=1;i<=n;i++){
if(vis[i])continue;
if(t==1){
ans[t]=i;
vis[i]=1;
dfs(t+1);
vis[i]=0;
}else{
if(p[ans[t-1]+i]){
ans[t]=i;
vis[i]=1;
dfs(t+1);
vis[i]=0;
}
}
}
}
int main(){
freopen("dfs3.in","r",stdin);
freopen("dfs3.out","w",stdout);
cin>>n;
dfs(1);
cout<<tot;
return 0;
}