1 条题解
-
0
不得不感叹一下,dfs代码是真长 老样子,直接上代码
//禁止抄袭,从我做起 #include<bits/stdc++.h> using namespace std; int a[21],b[21],n; bool is(int n){ if(n==1||n==0) return false; for(int i=2;i<=sqrt(n);i++){ if(n%i==0) return false; } return true; } void dfs(int s){ if(s==n+1&&is(a[n]+a[1])){ for(int i=1;i<=n;i++) cout<<a[i]<<" "; cout<<endl; return; } while(1) else{ for(int i=2;i<=n;i++){ if(b[i]==0&&is(i+a[s-1])){ a[s]=i; b[i]=1; dfs(s+1); b[i]=0; } } return; } } int main(){ cin>>n; a[1]=1; b[1]=1; dfs(2); return 0; }
嘻嘻,藏了一个小小的bug,这么低端的bug长脑子的就好好看看。啊哦,一不小心把提示放出来了。你们什么都没看见,对吧
- 1
信息
- ID
- 436
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 8
- 标签
- (无)
- 递交数
- 82
- 已通过
- 15
- 上传者