hdu 1016——Prime Ring Problem(DFS)

来源:互联网 发布:java多线程异步处理 编辑:程序博客网 时间:2024/06/08 09:10

题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1016

解题思路:经典的深搜题目。白书上有将素数环记录到暴力求解法的回溯法中

#include <stdio.h>#include <string.h>#include <stdlib.h>int n;int arr[30],hash[30];int check(int x){int i;for(i=2;i<x;i++){if(x%i==0)return 0;}return 1;}void DFS(int order,int index){int i;arr[order]=index;hash[index]=1;if(order==n && check(arr[order]+1)){for(i=1;i<n;i++)printf("%d ",arr[i]);printf("%d\n",arr[n]);}for(i=1;i<=n;i++){if(!hash[i] && check(arr[order]+i)){DFS(order+1,i);hash[i]=0;}}}int main(){int Case=1;while(scanf("%d",&n)!=-1){printf("Case %d:\n",Case++);memset(hash,0,sizeof(hash));DFS(1,1);printf("\n");}return 0;}


原创粉丝点击