66. [HAOI2004模拟] 数列问题
本以为会TLE,可。。。
dfs水题(很基础)
#include<bits/stdc++.h> using namespace std; int x,shu[20],ans; bool vis[20]; void print() { for(int i=1; i<=x; i++) printf("%d ",shu[i]); puts(""); ++ans; return; } bool tp(int px){ for(int i=2;i<=sqrt(px);i++) if(px%i==0) return false; return true; } void dfs(int k,int last) { if(k==x+1) { print(); return; } for(int i=1; i<=x; i++) { if(last&&!(tp(last+i))) continue; if(!vis[i]) { vis[i]=1; shu[k]=i; dfs(k+1,i); vis[i]=0; } } } int main() { freopen("dfs3.in","r",stdin);freopen("dfs3.out","w",stdout); scanf("%d",&x); dfs(1,0); printf("%d ",ans); return 0; }