hdu 1016 (DFS)

来源:互联网 发布:flash cs3 mac版 编辑:程序博客网 时间:2024/05/21 22:52

点击打开链接


分析:

经典DFS。。。

注意最后一个要与1的和为素!!


#include"stdio.h"#include"string.h"int prime[44];intmark[22];int a[22],n;void dfs(int k,int m){a[k]=m;int i;if(k==n){//注意最后一个要与1的和为素!!if(!prime[m+1])return ;for(i=1;i<n;i++)printf("%d ",a[i]);printf("%d\n",a[i]);return ;}for(i=2;i<=n;i++){if(prime[i+m]&&!mark[i]){mark[i]=1;dfs(k+1,i);mark[i]=0;}}}int main(){int i,k;memset(prime,0,sizeof(prime));prime[2]=prime[3]=prime[5]=prime[7]=1;prime[11]=prime[13]=prime[17]=prime[19]=prime[23]=1;prime[29]=prime[31]=prime[37]=prime[41]=1;k=1;while(scanf("%d",&n)!=-1){memset(mark,0,sizeof(mark));printf("Case %d:\n",k++);dfs(1,1);printf("\n");}return 0;}


原创粉丝点击